
Sergey
18.07.2018
12:49:16
expo быстрее и удобнее, как по скорости работы, так и по доп либам

tdesc
18.07.2018
12:50:11

Play
18.07.2018
12:51:23

Google

Sergey
18.07.2018
12:51:50

Play
18.07.2018
12:54:15
вместо этого получите пачальные и унылые фигуры.
в react-native init все четко

Роман
18.07.2018
12:57:00
Добрый день
Пытаюсь прокрутить FlatList к последнему эллементу и что-то не получается
scrollToEnd = () => this.list && this.list.scrollToEnd({animated: true})
<FlatList
ref={node => { this.list = node }}
data={this.state.data}
keyExtractor={(item, index) => index.toString()}
renderItem={({item}) =>
<View>
<Text>{item.title}</Text>
<Text>{item.data}</Text>
<Text>{item.dataType}</Text>
</View>
}
/>
пытался оборачивать в setTimeout не помогло

Sergey
18.07.2018
12:57:46
под expo
так запустил пример на андройде, все четко квадрат - квадрат, круг- круг ?

Play
18.07.2018
13:02:17
под expo
вообщем это было уже было не по одному кругу) не вижу профита в экспо

Gena
18.07.2018
13:03:38
А на какой ОС вы работаете?
macOS, android разработку сейчас на linux переношу (т.к. Apple в high sierra что-то такое сделала с WindowServer (это как-то с их миграцией на metal2 связано), что теперь некоторые фичи OpenGL, используемые в Android Emulator или Android Studio роняют мне ось)

rrrrrrrrrrrrrrrrrrrrr
18.07.2018
13:14:08

Tupalov
18.07.2018
13:24:31

Gena
18.07.2018
13:25:39

Google

Tupalov
18.07.2018
13:25:47
Оказывается RN не запускает тесты в окружении Windows, поэтому некоторые такие мажорные баги просачиваются в релиз, даже после многократных релиз-кандидатов
Да и я только что проверял тоже, проблема воспроизводится

Gena
18.07.2018
13:28:05
И да... с тестированием у них тоже треш...

Tupalov
18.07.2018
13:29:29
Да, это он.
Вот ребята тут обсуждают как раз про него
https://github.com/facebook/metro/issues/181#issuecomment-405858969
Я просто решил свой небольшой проект перенести с RN 0.53.3 на последнюю версию, и уже второй день мудохаюсь. Плюнул с последней, решил хотя бы на предыдующую 0.55, т.к. там не такие страшные breaking changes.. и все равно какие-то проблемы по типу той, что я писал выше.
Но решения так и не нашел. И не очень пойму, что именно надо делать )


Gena
18.07.2018
13:37:50
Я в какой-то момент очень надеялся, что haul будут активно развивать, тогда от всей этой прослойки с нестабильным metro и глупейшей haste можно было бы отказаться... но они затормозили в развитии... но хотя бы haste они начали выпиливать...

Алексей
18.07.2018
13:45:03

Tupalov
18.07.2018
13:52:49
Я так понял, что он должен решать какую-то проблему с модулями?

Алексей
18.07.2018
13:53:22


Gena
18.07.2018
13:58:49
почему haste глупейший?) то что непривычно и сходу совсем непонятно, это да)
Может немного эмоционально выразился. Сейчас объясню, постараюсь кратко.
Когда я учил javascript, то одной из вещей, восхитившей меня, была система модулей, в которой один и тот же пакет может существовать в разных версиях. Из тех языков, что я тогда знал, никто этого не умел и это приводило к страшному гемморою с конфликтующими зависимостями, когда тебе нужен модуль B, который зависит от A версии 1 и модуль C, который тоже зависит от A, только версии 2. И всё... достучаться до автора модуля B невозможно... при большом кол-ве модулей это становится гигантской проблемой. Вызвает её то, что в большинстве других языков пространство имен модулей глобально, т.е. в Perl, если у тебя есть модуль DBIx::Class, то это всё, ничего больше он в это имя не положит, если ты там что-то поправишь, то это увидят все остальные модули и т.п. В компилируемых языках ещё хуже... там для совместимости со стандартным редактором связей все именованные экспортируемые сущности глобальны. Т.е. нельзя иметь в C++ два класса с одинаковым именем. Соотвественно две версии одной и той же библиотеки. И так далее...
В javascript же, модуль импортируется локально... и это позволяет избежать всех подобных проблем (да, добавляет другую, типа модуль A может производить объекты, которые если скормить другой версии того же модуля, вызовут ошибки) это добавляет гибкости, оставляя возможность редкие проблемы решать людям.
И вот я вижу, что в погоне за краткостью написания импортов, кое-кто берет и убивает эту гибкость одним легким движением руки. Не глупо ли?
Заодно можно добавить сюда медленный ресолвинг (это конкретно haste), т.к. теперь надо не только по fs погулять, но ещё и каждый файл прочитать чтоб эти макрекры найти. Это вызывает необходимость иметь сложную систему кеша, которая ломается и всё равно работает не очень быстро, зато жрет память.
Достаточно? )))


Алексей
18.07.2018
14:03:43
Может немного эмоционально выразился. Сейчас объясню, постараюсь кратко.
Когда я учил javascript, то одной из вещей, восхитившей меня, была система модулей, в которой один и тот же пакет может существовать в разных версиях. Из тех языков, что я тогда знал, никто этого не умел и это приводило к страшному гемморою с конфликтующими зависимостями, когда тебе нужен модуль B, который зависит от A версии 1 и модуль C, который тоже зависит от A, только версии 2. И всё... достучаться до автора модуля B невозможно... при большом кол-ве модулей это становится гигантской проблемой. Вызвает её то, что в большинстве других языков пространство имен модулей глобально, т.е. в Perl, если у тебя есть модуль DBIx::Class, то это всё, ничего больше он в это имя не положит, если ты там что-то поправишь, то это увидят все остальные модули и т.п. В компилируемых языках ещё хуже... там для совместимости со стандартным редактором связей все именованные экспортируемые сущности глобальны. Т.е. нельзя иметь в C++ два класса с одинаковым именем. Соотвественно две версии одной и той же библиотеки. И так далее...
В javascript же, модуль импортируется локально... и это позволяет избежать всех подобных проблем (да, добавляет другую, типа модуль A может производить объекты, которые если скормить другой версии того же модуля, вызовут ошибки) это добавляет гибкости, оставляя возможность редкие проблемы решать людям.
И вот я вижу, что в погоне за краткостью написания импортов, кое-кто берет и убивает эту гибкость одним легким движением руки. Не глупо ли?
Заодно можно добавить сюда медленный ресолвинг (это конкретно haste), т.к. теперь надо не только по fs погулять, но ещё и каждый файл прочитать чтоб эти макрекры найти. Это вызывает необходимость иметь сложную систему кеша, которая ломается и всё равно работает не очень быстро, зато жрет память.
Достаточно? )))
сейчас такая "мода" есть, что создают папку с модулем, а внутри index.js, так вот потом этих непонятных файлов index становятся куча) с haste ты хоть гарантировано find-ом найдешь быстро файл) но это конечно все равно ооочень непривычно видеть) понятно что как всегда трейд оф, видимо фб хорошо так жилось, поди пойми что им нравится ?


Gena
18.07.2018
14:06:36
сейчас такая "мода" есть, что создают папку с модулем, а внутри index.js, так вот потом этих непонятных файлов index становятся куча) с haste ты хоть гарантировано find-ом найдешь быстро файл) но это конечно все равно ооочень непривычно видеть) понятно что как всегда трейд оф, видимо фб хорошо так жилось, поди пойми что им нравится ?
фб с этим хорошо жилось, пока было 5 проектов, которые хотели шарить код и быстро этот шареный код править. Эта же система не скейлится на 55 проектов, потому что позволяет неконтролируемые правки в шареном коде, для него не запускаются тесты и т.п. В react они с haste съехали. В RN в процессе, но процесс этот долог теперь... )
Они, кстати в master маркеры уже выпилили из файлов, оказывается в рай-оне вот этих коммитов: https://github.com/facebook/react-native/commit/eeab57aa2638565


Tupalov
18.07.2018
14:25:00
@savelichalex @gblack9 может вы знаете. Я вот так и не очень понял, это теперь нормально, что metro пытается транспилить третьи библиотеки из node_modules на основе .babelrc у каждой библиотеки?

Google

Tupalov
18.07.2018
14:27:16
Я сейчас установил RN 0.55.4, установил storybook, и если запустить, то все ок. Но если к storybook добавить addon @dump247/storybook-state, у которого свой собственный .babelrc с плагином transform-react-remove-prop-types и пресетами, то в этом случае бандлер мне выдает сразу ошибку
error: bundling failed: ReferenceError: Unknown plugin "transform-react-remove-prop-types" specified in "C:\\GIT\\sandbox\\rn_0554\\node_modules\\@dump247\\storybook-state\\.babelrc" at 0, attempted to resolve relative to "C:\\GIT\\sandbox\\rn_0554\\node_modules\\@dump247\\storybook-state"

Gena
18.07.2018
14:29:26

Tupalov
18.07.2018
14:31:26
Т.е. вообще-то для меня - это не нормально, ведь авторы библиотек транспилят все за нас при публикации в npm

Gena
18.07.2018
14:32:02
ща... ищу... какая у вас версия metro?

Tupalov
18.07.2018
14:35:26

Алексей
18.07.2018
14:36:35

Tupalov
18.07.2018
14:38:24

Gena
18.07.2018
14:38:36
Я сейчас поискал по своим проектам, и понял, что у меня этот регексп остался только для jest
В таком виде, к примеру:
transformIgnorePatterns: ['node_modules/(?!(react-native|lodash-es)/)']
А вот в rn-cli.config.js его нигде нет... вот сейчас смотрю в исходники metro ((

Tupalov
18.07.2018
14:45:04


Gena
18.07.2018
14:48:17
Нет ) jest игнорирует`/node_modules/` автоматом, а этот регексп, добавляет исключения, т.е. говорит, "игнорируй всё что начинается с node_modules/, кроме node_modules/react-native и `node_modules/lodash-es`"
В общем транспилят они всё сейчас похоже. Смотрите:
1. https://github.com/facebook/metro/blob/v0.30.2/packages/metro/src/rn-cli.config.js дефолтный конфиг, в него мержится проектный. там есть getBlacklistRE, но в нем такое: https://github.com/facebook/metro/blob/v0.30.2/packages/metro/src/blacklist.js#L15, т.е. самих node_modules нет.
2. Трансформер будет получать файлы на трансформацию и собирать для них конфиг, вот здесь: https://github.com/facebook/metro/blob/v0.30.2/packages/metro/src/transformer.js#L134 - ни каких ограничений, опять всё
3. Есть опция в том же файле резолвится, надо ли для всего использовать проектный .babelrc или искать для каждого модуля вот здесь обработка: https://github.com/facebook/metro/blob/v0.30.2/packages/metro/src/transformer.js#L87
Описание опции здесь: https://github.com/facebook/metro/blob/v0.30.2/packages/metro/src/Config.js#L75
И транспилят они всё скорей всего чтоб HMR работал или ещё какие преобразования они теперь через babel делают... не знаю


Tupalov
18.07.2018
15:02:09
Большое спасибо. Приходит немного понимания.
Еще вопрос - получается, что metro реализует свой кастомный резолвер для модулей, где пытается их сразу транспилить и каким-то образом оптимизировать?
В общем это я наверно сам уже смогу по исходникам понять. Главное что хотя бы нить нашел. Спасибо )

Gena
18.07.2018
15:21:59

Google

Tupalov
18.07.2018
15:23:41
Чем вебпак не подошел?

Alexander
18.07.2018
15:23:53
Подскажите начинающему, как лучше отлаживать стили в реакте?

Gena
18.07.2018
15:24:02

Alexander
18.07.2018
15:30:43

Admin
ERROR: S client not available

Unknown number
18.07.2018
15:50:17

Addicted
18.07.2018
15:52:46
ребят привет, я тут наколхозил немного, может у кого есть идеи...
https://giphy.com/gifs/vx2exZKa0Gvufv341n
проблема в изменении цвета выбранного item

Valentin
18.07.2018
15:55:15
а нельзя черный блок спозиционировать за селектором?
а селектору впилить прозрачный фон
тогда текст будет всегд поверх блока и не надо стейты менять по смене

Addicted
18.07.2018
16:09:40
да так уже есть, текст черный)
http://prntscr.com/k81mdq
думал наоборот, черный поверх селектора, и впилить текст в черный блок..но думаю будет хуже еще)

Valentin
18.07.2018
16:13:12
а какой пакет для селектора используешь?

Addicted
18.07.2018
16:14:36
да и поверх если фон, то селектор собственно недоступен будет
стандартный, PickerIOS
http://www.giphy.com/gifs/cOHWVNefAhPkaiEyRA

Gena
18.07.2018
16:56:36
проблема в изменении цвета выбранного item
Теоретически можно анимировать и цвет, но это будет всё равно не тот эффект. А вот что надо, так это некий слой "эффекта" сверху, типа маски, по которой инверсия происходит (в нативе, я бы в эту сторону думал). Стандартного такого компонента в RN вроде нету... но м.б. что-то на гитхабе найдется?

Google

Gena
18.07.2018
17:15:12
Кто нибудь detox использует для тестирования? Можете ощущениями поделиться?

Vladimir
18.07.2018
17:16:34

Gena
18.07.2018
17:19:26

Dmitry
18.07.2018
18:05:33
Реакт нейтив это боль

Play
18.07.2018
18:45:24
Как сделать при каждом новом вызове counter + 1
state = { count: 0 }
static getDerivedStateFromProps(nextProps, prevState) {
if (prevState.counter > nextProps.maxCount) {
return {
counter: prevState.counter + 1
}
}
return null
}
componentDidMount() {
this.timer = setInterval(() => this.props.getTickers(), 5000)
}

Zamir
18.07.2018
18:52:46

Gena
18.07.2018
19:00:54
А код который это делает можно посмотреть? Интересует конкретно строчка с импортом в App.js, притом именно скопированная из реального кода (руками не переписывайте ?

Zamir
18.07.2018
19:02:49

Gena
18.07.2018
19:06:20

Zamir
18.07.2018
19:06:38

Gena
18.07.2018
19:08:27
Вот )) Варианта 2:
1. Вы хотите использовать абсолютные импорты. Положите в src package.json вот этого хватит: { "name": "src" }
2. Вам эти хаки не нужны, тогда импортируйте как import Login from './src/Login'

Zamir
18.07.2018
19:09:15

Gena
18.07.2018
19:10:05