Anonymous
А не работы
The Max
Andrey
Есть даже ощущение что под одну платформу быстрее на rn писать чем нативно
The Max
Свифт не позволяет делать хуяк хуяк, и модулей в NPM в миллионы раз больше
The Max
Зарерживай рендер
The Max
Или читай сторедж перед переходом и пропсы прокидывай
The Max
И на основе них решай, что рендерить
Serge
Или на скрине ActivityIndicator показывать, пока длится запрос в AsyncStorage
Andrey
вообще не понимаю в чем может быть проблема. Отрисовать пустой рендер и потом закидывать компонеты по мере cчитывания asyncstorage?
The Max
https://reactnavigation.org/docs/en/params.html
Serge
Или сменить AsyncStorage на какую-нибудь синхронную бд.
The Max
Потому делай это в момент нажатия на кнопку перехода
The Max
На прошлом экране
Andrey
AsyncStorage это тормоз, я бы не стал на него надеяться как на стейт для приложения. Есть возможность просто скидывать его в стейт?
Andrey
Я с кейчаном в этом месте, сейчас раскажу
Andrey
ставим react-native-splash-screen, проверяем нужные проверки, выполняем все действия, потом SplashScreen.hide();
The Max
Если это сразу после сплэша - сделай сплэш экраном и там все данные проверяй
The Max
Юзер возражать не будет т.к. загрузка в сплэше - это нормально
Serge
Задержка все равно останется тупо за счет тормознутости AsyncStorage.
Andrey
Задержка все равно останется тупо за счет тормознутости AsyncStorage.
Закрываем сплешем, можно даже кинуть сплеш с анимацией)
The Max
Там задержка 0.2s будет
Serge
Использую у себя в проекте Realm. Синхронная бд.
The Max
Всем пох на нее в приложениях
The Max
Это не веб, где через 0.1сек юзер валит с сайта
Serge
С синхронностью всё проще.
Serge
У кого как. У меня до полусекунды доходило.
Andrey
Было на одном проекте стандарный сплеш => анимированный сплеш, в этот момент делаем все действия => уходим на нужный экран. Никаких белых экранов!
The Max
Значит что-то в коде медленное
Andrey
больше не как... ты не сможешь выполнит js код до загрузки бандла
The Max
У меня при запуске приложение поднимает прошлое состояние 6ти экранов из AsyncStorage, набивает им контекст на сплэше, и отправляет юзера на MainScreen На все примерно пол-секунды уходит Потом уже MainScreen при переходе на него стартует пачку запросов к API, каждый из которых спартует еще 2-5 запросов по результату, которые занимают секунд 5-6, но юзер уже может начать смотреть на интерфейс и чувствует себя нормально
The Max
AsyncStorage не создает видимой для пользователя задержки, если она происходит там, где задержке разумно происходить
Andrey
Кто нибудь работает в js с многопоточностью? надо решение которое не будет ломать дебаггер, react-native-threads из за этого не подходит
Andrey
А какую задачу хотите с помощью многопоточности решить?
операции с crypto и buffer и надо подогнать массивы для графиков с очень больших обьектов
The Max
Или потоки в натив скидывать
Andrey
Та никак нормально с потоками на стороне джс не поработать
можно на самом деле, react-native-threads даже справляется, но сломанный дебагер на ios меня печалит
Alexsandr
я хотел попробывать, но чет руки не доходили, а то у меня realm ui фризит на несколько секунд
Andrey
webview.onMessage / window.postMessage?
смотрел на webview но вот он же мои патчены node_modules с либами не сможет потянуть? Хотя для работы с массивами норм, спасибо
Andrey
о кстати, react-native-threads норм ?
Вообще не плох, мои задачи покрывает, хоть и есть проблемы со сборкой bundle в android если испульзуете свой buffer, скорее даже проблемы с транформатором babel. ПС: надо только в package.json впухнуть скрипт для сборки bundle с threads, перед релизом)
Andrey
о кстати, react-native-threads норм ?
На всякий случай при создании нужного функционала желательно собрать релизные сборки для обеих платформ. Слишком разное поведение в dev\prod режимах
Serge
А не должен. Много данных гоняете?
Alexsandr
А не должен. Много данных гоняете?
ну у меня ui еще не самый простой
Kto?
Но вообще, redux-persist все хранит в асинксторадже, так что проблем вообще никаких не вижу его юзать
The Max
Мне кажется что это плохое решение
С точки зрения UX это лучшее решение из тех, что мы тестили
The Max
А вообще, если у кого аллергия на AsyncStorage, вот норм решение: https://www.npmjs.com/package/react-native-shared-group-preferences
The Max
Не использует его
The Max
Плюс можно будет брать данные из нативного кода (например в виджетах Today на iOS)
чей ты
я так и не услышал про проблемы AsyncStorage, кторые он успешно решает
The Max
Я не вижу никаких проблем в AsyncStorage
The Max
Но многие вон выше видят 🤷‍♂️
чей ты
Я не вижу никаких проблем в AsyncStorage
а препадаешь как замену (AsyncStorage) и не можешь обосновать почему
чей ты
The Max
Линк для тех, кто считает, что им нужна)
The Max
Какие у кого проблемы с AS - пусть каждый сам для себя решает и читает в доках, чем Shared Group Prefs от AS отличается
Kto?
Юзай реалм если хочешь решить что-то
不退転」
Юзай реалм если хочешь решить что-то
Реалм это оверкилл если нужно хранить какие-то несвязанные пропертис
Kto?
Скорей всего, я не до конца тебя понял
不退転」
Например?
Ну я о том что в реалме нужно хранить связанные модели/структуры данных, а не поля типа почты/токена/тп
Andrey
алярм. Кто в курсе почему createMaterialTopTabNavigator на android ломается при указании animationEnabled : true (default). Проблема: в таб навигаторе есть стек навигаторы и обычные экраны. Табы в навигаторе мои. navigation.navigate(...) выполняется только ОДИН раз, но свайпами походить все равно можно. На ios все нормально же работает
Andrey
add "react-navigation": "^3.3.2",
Vitaly
как нормально реализовать хрень слева есть опыт у кого?
если лень будет самому писать https://github.com/thegamenicorus/react-native-timeline-listview