Size: a a a

React Native — русскоговорящее сообщество

2020 May 08

%

%username% in React Native — русскоговорящее сообщество
то есть в какой-то момент по идее лаги уйдут и ты поймешь какой компонент жрет память
источник

KS

Kamo Spertsyan in React Native — русскоговорящее сообщество
%username%
внутри экрана, который тормозит, оборачивай каждый компонент в React.memo и найди тот, что постоянно обновляется, как один из вариантов
Хорошая гипотеза, сейчас попробую в принципе выпилить почти всё с экрана
источник

%

%username% in React Native — русскоговорящее сообщество
ну это стандартный механизм рубильника - отключай компоненты для диагностики и поиска того, который лагает
источник

YO

Yurii Oliiarnyk in React Native — русскоговорящее сообщество
Привет колеги
У меня есть несколько екранов, которые состоят из BottonTabs i Stack
структура екранов такая:
- BottomTabs
-- resource 1
--- stack 1-1
--- stack 1-2
---- bottomTabsDetails
-- resource 2
--- stack 2-1
--- stack 2-2
---- bottomTabsDetails

Мне нужно когда я нахожусь на на первом екране ресурса(в даном случае список ресурсов) я хочу показывать bottomTabs всего приложеня, при переходе на детальную страницу скрывать bottomTabs приложение и показывать bottomTabsDetails

Суть проблемы в том, что при переходе меж екранами, есть некоторое подлагивания и предыдушие табы прячутся не плавно, с задержкой
Использую react-navigation v5, использовал v4 такой проблемы не было, все работало плавно

Возможно кто то сталикивался с даной проблемой?
источник

AE

Artur Eshenbrener in React Native — русскоговорящее сообщество
Кстати никто не знает, как там прогресс отказа от bridge, делают?
источник

%

%username% in React Native — русскоговорящее сообщество
всегда так делаю в чужом коде )
источник

%

%username% in React Native — русскоговорящее сообщество
первый раз слышу, заработался наверное, как они хотят от него отказаться?
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Kamo Spertsyan
Друзья, накиньте, пожалуйста, идей. Мои иссякли.

Приложение сильно "тормозит" - навигация между экранами, загрузка экрана и всё такое. Самый обычный экран - на mount грузятся данные с сервера, потом dispatch, дальше redux подхватывает и отрисовывается экран. На всемя загрузки кручу спиннер.

Тормозит только на Android-е. И в debug, и в release конфигурациях. При этом если включаю debug в dev tools - работает быстро. То есть на мощностях ноутбука всё ок, только мощности эмулятора/девайса не вывозят.

Грешил на движок JS - попробовал отключать Гермес, но результата нет, всё так же тормозит.

Трассирую - загрузка с сервака работает быстро - 1-1,5 секунды. Самое долгое - dispatch результата - ~5 секунд. Проверяю рендеры экрана - 10-12 раз. Срезал до 2-х раз - всё равно тормоза.

Systrace ничего не показывает, FPS не сильно проседает, JS и UI умещаются во фреймы, да и визуально не заметны дропы фреймов.

В фоне сложных процессов вроде нет, есть соккеты - их отключение тоже не помогает.

Куда ещё можно копнуть?
Можно запустить профайлер в Chrome. Да это дебаг билд будет, но общее представление получите. И мой совет - не смотрите на искусственные метрики которые там ФБ навставляли, смотрите не голый JS
источник

KS

Kamo Spertsyan in React Native — русскоговорящее сообщество
Gena Black
Можно запустить профайлер в Chrome. Да это дебаг билд будет, но общее представление получите. И мой совет - не смотрите на искусственные метрики которые там ФБ навставляли, смотрите не голый JS
Не очень понял вторую часть про метрики. Можете пояснить?
источник

AE

Artur Eshenbrener in React Native — русскоговорящее сообщество
%username%
первый раз слышу, заработался наверное, как они хотят от него отказаться?
источник

%

%username% in React Native — русскоговорящее сообщество
спасибо, почитаю
источник

GB

Gena Black in React Native — русскоговорящее сообщество
%username%
первый раз слышу, заработался наверное, как они хотят от него отказаться?
Позволить наконец делать прямой биндинг в движок js (через тонкую прослойку jsi без маршаллинга данных в идеальном случае)
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Kamo Spertsyan
Не очень понял вторую часть про метрики. Можете пояснить?
Смотрите в профайлере на js код, не смотрите в раздел где времена рендера и компоненты
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Gena Black
Позволить наконец делать прямой биндинг в движок js (через тонкую прослойку jsi без маршаллинга данных в идеальном случае)
С моей точки зрения достаточно было jsc интерфейс открыть, но уже на гермес человекогоды потрачены и без прослойки никак
источник

KS

Kamo Spertsyan in React Native — русскоговорящее сообщество
%username%
ну это стандартный механизм рубильника - отключай компоненты для диагностики и поиска того, который лагает
увы, отрубил всё, кроме спиннера - всё то же
источник

%

%username% in React Native — русскоговорящее сообщество
Отрубай уровнем выше
источник

KS

Kamo Spertsyan in React Native — русскоговорящее сообщество
%username%
Отрубай уровнем выше
так это уже экран 🙂
источник

%

%username% in React Native — русскоговорящее сообщество
Ну :-) тогда профайлер, дедов способ не прокатил )
источник

Ф

Филипп in React Native — русскоговорящее сообщество
Всем привет, ребят, подскажите что можно использовать вместо setTimeout, setInterval. Это же браузерное API?
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Филипп
Всем привет, ребят, подскажите что можно использовать вместо setTimeout, setInterval. Это же браузерное API?
Они есть в RN
источник