Gena
Там было несколько причин перехода на fabric: redux-like (и immutable), синхронные вызовы в js...
Gena
да )
Gena
Ещё типа медленный dynamic dispatch (Очевидно намек на java и ObjC)
Gena
Но я знаю другое: C++ один из самых, блин, сложных языков из широко используемых... он реально огромен... и на нем очень легко писать плохой код.
Stas
но ведь нет альтернатив
Stas
непривычно в этом чате читать интересные вещи, а не про то, как очередной корявый npm пакет интегрировать в проект
Stas
было бы конечно смешно. фейсбук нанимает отдел хаскелистов переписывать react-native с крестов.
Artur
было бы проще сделать транслятор из js в С++ и все были бы счастливы
Igor
вот бы на pure на rn пописать)
Зачем, если есть reasonml 👽
Gena
а зачем копировать?)
Можно не копировать (копировать лениво), но тогда надо защиту от одновременного доступа из разных потоков делать и это будет медленно )
Aleksei
так есть же иммутабельные структуры, они как раз для такого и предназначены
tdesc
Коллекции на хешах быстро пересобираются
tdesc
Специально оптимизируют жеж
Gena
так есть же иммутабельные структуры, они как раз для такого и предназначены
Что-то я их пока в Fabric не видел... и эти структуры довольно специфичны, чтоб их для дерева нод использовать.
Aleksei
так мы про Fabric говорим что ли) я чет запутался в вашем диалоге)
Gena
так мы про Fabric говорим что ли) я чет запутался в вашем диалоге)
Ну да... я собственно пытался обосновать свою позицию, что не жду от фабрика ничего хорошего ))
Gena
Коллекции на хешах быстро пересобираются
Там C++, мы когда-то пытались на нем google хеши использовать... типа самые быстрые... в общем да, быстро, но с кучей подводных камней, типа вырожденных случаев для которых всё становится медленным и т.п.
Gena
Вообще, с моей точки зрения, единственная архитектурная проблема RN в настоящем его виде (да, есть куча не архитектурных типа багов, платформозависимых компонентов, отсутствия некоторых критических компонентов), так вот, единственная настоящая проблема сейчас, это невозможность синхронного вызовов из натива в JS. Но это вообще не про фабрик, насколько я вижу... это про однопоточность JS... не проблема дернуть что-то туда из натива, JSC это позволяет, проблема, что тебе придется ждать, пока доработает текущий цикл JS кода... а потом отработает твой вызов. Это займет непредсказуемое время, которое твой поток будет ждать, если это UI-поток - всё зависнет на это время, если это layout - не будет лэйаута, если это твой нативный модуль, в нем не будет ничего происходить... И в текущем дизайне и вообще в любом другом дизайне без модификации JS api, я решения этой проблемы не вижу... возможно оно есть где-то в районе вывода в JS чего-то похожего на Web Workers... не знаю...
Gena
Примеры проявления этой проблемы: невозможность произвольно управлять анимациями из JS, опаздывающий measure и onLayout, проблемы с управляемым TextInput, кривая система респондеров и хендлинга тачей с огромным кол-вом багов... всякие KeyboardAvoidingView и SafeAreaView, проблема с лэйаутом кешируемых изображений и прочее...
Vladimir
Да решение то на поверхности - блокировать UI тред в нативной части. Но тогда будет очень сложно хвастаться 60fps UI, потому что вся ответственность за конечный перфоманс ляжет на девелоперов. Скорее всего добавят апи с синхронным вызовом и огромным предупреждением, что ребят, используйте на свой страх и риск.
Stas
Вообще, с моей точки зрения, единственная архитектурная проблема RN в настоящем его виде (да, есть куча не архитектурных типа багов, платформозависимых компонентов, отсутствия некоторых критических компонентов), так вот, единственная настоящая проблема сейчас, это невозможность синхронного вызовов из натива в JS. Но это вообще не про фабрик, насколько я вижу... это про однопоточность JS... не проблема дернуть что-то туда из натива, JSC это позволяет, проблема, что тебе придется ждать, пока доработает текущий цикл JS кода... а потом отработает твой вызов. Это займет непредсказуемое время, которое твой поток будет ждать, если это UI-поток - всё зависнет на это время, если это layout - не будет лэйаута, если это твой нативный модуль, в нем не будет ничего происходить... И в текущем дизайне и вообще в любом другом дизайне без модификации JS api, я решения этой проблемы не вижу... возможно оно есть где-то в районе вывода в JS чего-то похожего на Web Workers... не знаю...
есть https://github.com/joltup/react-native-threads , но этих проблем оно, разумеется, не решит.
Stas
Создается новый тред на каждый js worker. Можно разгрузить event-loop в редких случаях, когда правда нужно что-то долго считать.
Azimbek
Всем привет. У меня есть #вопрос. Я использовал flatlist с изображением в своем приложении. Есть сотни изображений. Пока я прокручиваю flatlist, приложение разбилось. Как решить эту проблему?
Nick
https://github.com/stoffern/react-native-optimized-flatlist
Nick
как вариант
Gena
App not responding
Это не ошибка... Android? Что logcat отфильтрованный по процессу приложения показывает?
Gena
https://github.com/stoffern/react-native-optimized-flatlist
Ох... я бы очень рекомендовал перед тем как этим пользоваться посмотреть в исходники, понять, что он конкретно делает и только после этого решать, надо оно вам или нет )
Gena
App not responding
Кстати, а что будет, если все картинки на цветные квадратики заменить? Будет работать?
Gena
Мы просто ловили что-то подобное с родным Image
Gena
я-то сам не юзаю, в своё время в issue react native советовали для увеличения производительности🤔
Если покопать github, то там есть ещё решения (самое продвинутое от китайцев)... но вот я с ними разбирался и в итоге свой пулинг вьюх писал, потому что они почти все убивают элементы выходящие за пределы экрана, это влечет уничтожение и постоянное создание нативных вьюх, что очень дорого...
Gena
Мы просто ловили что-то подобное с родным Image
Для нас решением было использовать react-native-web-image (или `react-native-fast-image`), но тоже надо сперва понять, что именно процессинг изображений лочит треды
Vlad
никто не подскажет почему на андроиде у бордера такая леснка?
Vlad
Никита
никто не подскажет почему на андроиде у бордера такая леснка?
попробуй фон закрасить, вроде обычно решает
Vlad
нашел ишью https://github.com/facebook/react-native/issues/17267
Vlad
в 56 поправили вроде как
Tupalov
Коллеги, доброе утро. Обновлялся ли кто-то до RN 0.55.4 с установленным storybook и addon'ом к нему @dump247/storybook-state? Я обновлялся с версии 0.53.3. Возникает проблема, когда metro-bundler пытается собрать для меня js бандл. Выдается ошибка следующего типа: error: bundling failed: ReferenceError: Unknown plugin "transform-react-remove-prop-types" specified in "C:\\GIT\\rn\\node_modules\\@dump247\\storybook-state\\.babelrc" at 0, attempted to resolve relative to "C:\\GIT\\rn\\node_modules\\@dump247\\storybook-state" Такое чувство, что бандлер пытается собрать этот addon из исходников на основании его .babelrc, где как раз указано, что нужен плагин transform-react-remove-prop-types, хотя эта библиотека предоставляет уже транспиленную версию. @dump247/storybook-state/package.json { ... "main": "dist/index.js" ... } Может кто-то с похожей проблемой сталкивался?
Tupalov
И еще вопрос. Кто-то реально смог перевести существующий проект на июньский апдейт RN 0.56? :)
Rinat
привет ребят, как такой пикер реализовать, волнует темный бэкграунд http://prntscr.com/k7uh03
Rinat
может кто сталкивался или делал
Gena
И еще вопрос. Кто-то реально смог перевести существующий проект на июньский апдейт RN 0.56? :)
Да ;-) Игрушечные все перевёл. Большой на неделе буду пробовать.
Tupalov
Да ;-) Игрушечные все перевёл. Большой на неделе буду пробовать.
Я когда перевел, возникала такая ошибка: UnableToResolveError: Unable to resolve module `AccessibilityInfo`Даже issue такой есть, но он нифига не решается https://github.com/facebook/react-native/issues/14209
Tupalov
P.S> использую Windows :)
Tupalov
Также некоторые библиотеки отвалились из-за несовместимости версий сборки на Java.
Tupalov
Но это решаемые проблемы, а вот issue что-то не получилось преодолеть.
Gena
Там есть несколько вещей (часть из них у меня не проявляется, из-за того, что это работает в связках react-native-typescript-transformer -> metro и ts-jest -> jest). Поэтому я делаю так: 1. Форсим @babel/core той же версии, что в RN в npm можно просто без последнего элемента ^7.0.0-beta, babel-core в 7.0.0-bridge.0 и babel-preset-react-native в 5.0.2 2. Возможно чать проблем я решал через фиксы в кастомном форке (но по моему там только нативные вещи и порт некоторых изменений в андроид)... можете посмотреть в коммитах, в общем RN у меня вот в это стоит git+https://github.com/vovkasm/react-native.git#v0.56.0-woof.4 Итого в package.json: "dependencies": { "react": "16.4.1", "react-native": "git+https://github.com/vovkasm/react-native.git#v0.56.0-woof.4", ... }, "devDependencies": { "@babel/core": "^7.0.0-beta", "babel-core": "7.0.0-bridge.0", "babel-preset-react-native": "5.0.2", ... } Что там надо ещё для чисто-js проектов относительно лениво обсуждается в багрепортах на гитхабе... )))
Rinat
ребят, сорян за повтор. Но может, кто подскажет все же :)
Rinat
http://prntscr.com/k7uh03 реально сделать со стандартным пикером? волнует стили , бекграунд
Rinat
Ок, может есть что-то похожее готовое? или кто делал подобные компоненты уже? готов купить
Tupalov
@gblack9 спасибо, гляну. Как, кстати, пишется на TS в RN?
Tupalov
Я в смысле DX
Gena
Я в смысле DX
Отлично ) Рефакторинг, навигация по коду, автодополнение... А что такое DX?
Tupalov
developer experience
Tupalov
аналог user experience (UX), только для разработчиков )
Gena
А... ну тогда ответил ))
Gena
)))) я так не умею 😄
Sergey
такой вопрос react navigation 2.0
Sergey
вышел
Sergey
back кнопка ведет себя, как navigate
Sergey
те без обновления содержимого, как перевести ее в режим push ?
Sergey
только не через headerLeft
shashkov0
Как можно сделать показ Alert'a сообщением "Хотите ли сохранить данные" при срабатывании любой навигации?
Sergey
через отслеживание событий
shashkov0
Речь об этом https://reactnavigation.org/docs/en/navigation-prop.html#addlistener-subscribe-to-updates-to-navigation-lifecycle ?
Sergey
да
Max
Хэллоу, коллеги. Использую react-native-web, после обновления до последней версии все юнит тесты (jest) падают с ошибкой: TypeError: Cannot read property 'createAnimatedComponent' of undefined сталкивался кто-нибудь?
Aynur
Всем привет, ни у кого не было такого, что у Headera от native-base отсутствует тень? (elevation не помогает)