Taras
привет всем, у меня keyboardAwareScreenView и при клике на последней инпут на странице тайтл навигатора скрывается кто знает как пофиксить?
不退転」
Пипл, что бы забить скрин нужной инфой нужно сделать 4-5 реквестов, когда эти реквесты обрабатывается весь UI фризится, но разве такое возможно? Весь джаваскрипт код обрабатывается на в другом потоке, почему тогда main thread уходит в фриз?
不退転」
На айосе полный фриз, на андроиде лишь слегка подлагивает
不退転」
Тут не стоит вопрос оптимизации, скорее интерес как так происходит?
Taras
Ага
Kto?
У тебя какое поведение клавы?
Kto?
Adjust Pan?
Vadim
Вопрос по RNN. В случае с bottomTabs все компоненты сразу должны грузиться? Или я нет так что-то сделал?
Vadim
不退転」
Serge
В том же дефолтном TouchableNativeFeedback анимацию начинает JS-тред.
Serge
UI не может обрабатываться в JS треде
Тогда надо быть точнее. Как вы определяете, что нативный тред повис? Инспектор показывает 0 фпс нативного треда?
不退転」
Тогда надо быть точнее. Как вы определяете, что нативный тред повис? Инспектор показывает 0 фпс нативного треда?
я без инспектора смотрю, как только запускаются запросы приложение фризится и любые манипуляции с UI становятся не возможны
不退転」
на эмуляторе и на девайсе
不退転」
если делать только один запрос и им заполнять все графики то все ок
Serge
Для решения этой проблемы чуваки придумали react-native-gesture-handler и связанные либы.
Serge
Чтоб связанные с UI штуки НЕ обрабатывались в JS-треде.
Serge
Хотя это снятие симптомов. Проблема в перегрузке JS-треда.
不退転」
Для решения этой проблемы чуваки придумали react-native-gesture-handler и связанные либы.
не вижу связи с моим делом, у меня вопрос не в анимациях
不退転」
и не с gesture'ами
不退転」
сори, не понимаю как у меня может фризится UI в JS треде, коль по логике работы RN, во-первых у меня он перегружен тред запросами к апишке, а во-вторых вызовы изменения на UI идут сперва с JS-thread'a, сериализуются, проходят через shadow-thread, затем десериализуются, а потом попадают на main thread где и модифицируют UI
Serge
Возможно, мы говорим о разных вещах. JS однопоточен, он перегружен, запросы на изменение UI не идут, потому что JS перегружен.
不退転」
а, в принципе логично, но если изменения ещё висят на перегруженном js-треде, то фриз main'a меня все-равно тревожит
Serge
Во-во. Тут уже конкретно нужно отлаживать. Начав с определения, JS-тред блокируется или перегружен.
Serge
Попробуйте профилировщиком хромовым посмотреть, выполняется куча всего во время фризов или ничего.
Serge
Если куча всего, то это потенциально можно починить. Если ничего, то сложнее.
Serge
а, в принципе логично, но если изменения ещё висят на перегруженном js-треде, то фриз main'a меня все-равно тревожит
Пока вы не открыли инспектор и не убедились, что нативный тред имеет 0 фпс, говорить о "фризе main'а" преждевременно. И дискуссия не заменит диагностику.
不退転」
Попробуйте профилировщиком хромовым посмотреть, выполняется куча всего во время фризов или ничего.
та не, это концептуально не самая хорошая идея делать 4-5 реквестов на один скрин, либо буду делать префетчи с разных скринов, либо попрошу бэкендщика объеденить запросы сократив их до двух
不退転」
одно очевидно что именно тонна запросов хламит поток
Serge
одно очевидно что именно тонна запросов хламит поток
А не должны. У меня в проекте, например, наблюдается нечто вроде фриза JS-треда при попытке именно отрендерить всякие штуки, но я еще не разбирался с этим.
Serge
А вам следует проверить, будут ли фризиться треды, если в ответ на запросы вы не будете ничего делать. Чтоб определить, это именно запросы как таковые роляют или логика обработки ответов. Или запросы во время обработки ответов.
Aleksei
и даже скроллвью фризится?
不退転」
и даже скроллвью фризится?
элементы намертво, а скролл очень лагучий
Danila
Ребята, ситуация: Есть поиск, с сервера приходят подходящие итемы, они рисуются во Flatlist. Проблема - некоторые итемы иногда застревают в списке. То есть при последующих рендерах рисуется актуальный массив + несколько лишних итемов. Extradata ситуацию не спасает. Че списку надо??
Aynur
значит неправильно обрабатываете данные с сервера
Danila
Проверить, что с сервера не приходят дубликаты.
Не приходят. И в логах видно и текстом вывожу кол-во итемов. Число одно, во флетлисте видно другое количество
Danila
значит неправильно обрабатываете данные с сервера
А как неправильно Во флет лист сую массив как обычно, и рендерер итемов. Ничего необычного вроде бы
Aynur
с key что?
Danila
Айдишники вытаскивает
Aynur
уникальные все?
Danila
Хм, надо бы проверить
Serge
И, говорите, показывает дубликаты, то при этом не показывает йеллоубокса о повторяющихся ключах?
Danila
Там не дубликаты, а результаты одного из поисков не удаляются
Danila
Вроде был бокс но это странно
Danila
Danila
Айди с сервера
Danila
Но надо проверить что там
Dmitry
Я думаю, что пора скинуть код
Danila
ок, 5сек
Danila
<FlatList bounces={false} data={users} keyExtractor={item => item.id + ''} extraData={this.state} //extraData={users} //extraData={users.length} //extraData={users[0].id} renderItem={this.renderUserRow} onEndReached={() => this.more()} removeClippedSubviews={true} refreshing={this.state.isSearching} />
Danila
users - массив объектов с сервера
Danila
в рендере картинка+текст+кнопка
Aynur
а метод получения с сервера?
Aynur
где users заполняется
Aynur
что за ' item.id + " ' ?
Danila
searchUsers(searchText) .then(users => { this.setState({users}) })
Danila
Aynur
меня смущает после +😏
Aynur
чтобы стрингом было?
Danila
ага
Danila
там ругается если число
Danila
со строкой норм
Aynur
ну понятно, toString есть православный
Danila
а разница?)
Aynur
хз, эстетика
Dmitry
Я не перестаю удивляться находчивости людей)
Aynur
я не перестаю удивляться jsу
Aynur
иногда такие перлы выдает
Dmitry
Линтеры спасают немного