@reactnative_ru

Страница 680 из 878
Nick
05.06.2018
14:25:59
Всем привет. Кто-нибудь знает, как заставить FlatList показывать только определенное количество айтемов из массива во время скролла? Например у меня есть 100 элементов, я хочу, чтобы отображались всегда только 10 при скролле, а те, что ниже и выше, убирались. Нужно для оптимизации. Подобный эффект наблюдал только когда рендерил больше 1000 айтемов, и около 100 из них, ближайших к области видимой юзеру, отображались. Можно ли как-то настроить количество ближайших айтемов, которые должны отобразиться в области, видимой юзеру?

Zae
05.06.2018
14:26:55
разве флатлист не делает это за тебя?

Sergey
05.06.2018
14:28:00
ага

flatlist как раз для этих целей

Google
Sergey
05.06.2018
14:28:33
поэтому listview ушел в deprecated

Serj
05.06.2018
14:29:39
возможно вы ищите removeclippedsubviews

свойство

Nick
05.06.2018
14:30:57
да, FlatList это делает, но он слишком много айтемов рендерит, у меня уже на 40 начинает лагать, при добавлении нового айтема. Я хочу попробовать сделать так, чтобы в один момент было около 10 айтемов

возможно вы ищите removeclippedsubviews
мм, попробую, спасибо

Serj
05.06.2018
15:06:35
А что это за optimized?

Denis
05.06.2018
15:06:39
Слава нативному рекуклеру в ведре

Он все могет

Denis
05.06.2018
15:08:04
шта?
Recyclerview в андроиде

Google
Demuz
05.06.2018
15:15:52
Sergey
05.06.2018
15:16:52
To infinity and beyond ?

Nick
05.06.2018
15:17:04
10? а если экран большой?
мм, ну тогда не 10, а по несколько догруженных с обеих сторон вне экрана. Походу мне вообще VirtualizedList нужен, а не FlatList

Ivan
05.06.2018
15:22:49
подскажите, есть ли какие-то способы побороть жирнеющий шрифт на android? на ios рисуется где-то в полтора раза тоньше

Ivan
05.06.2018
15:27:07
Посоветуй хороший модуль для работы с gps( в частности с бекграунд модом)

Demuz
05.06.2018
15:43:23
И в правду, иногда различия скорости работы дебага и релиза просто поражают.

Nick
05.06.2018
15:51:11
А ты тестил на релизных сборках и без консоль логов?
да, просто у меня динамический список с добавлением, удалением и анимацией

Dmitry
05.06.2018
15:57:02
В какую сторону? Лучше или хуже? Или по разному

И в правду, иногда различия скорости работы дебага и релиза просто поражают.

Demuz
05.06.2018
16:03:35
В какую сторону? Лучше или хуже? Или по разному
Если коротко, я хотел остановить разработку приложения, только потому что слишком много лагов появилось по мере разработки, слишком долгие время отклика и отрисовка переходов и тому подобное. Но после того, как я собрал и протестировал релиз, я просто о*уел от скорости его работы, в сравнении с дебагом. Оно практически не отличалось от работы любых других приложений. Разумеется, решил остаться с ReactNative.

Показал релиз коллегам и сказал, смотрите, есть же все равно задержка, в МС 10-30 может, ну не знаю, примерно, на что мне сотрудники ответили, мол, что это у меня в голове задержка, а приложение работает просто отлично и они не видят никаких артефактов в работе.

Igor
05.06.2018
16:06:14
нативные списки тоже могут подлагивать, если постараться

Demuz
05.06.2018
16:07:14
нативные списки тоже могут подлагивать, если постараться
Ну вот у меня по ФПС например жестоко лагает в плеймаркете экран, где список установленных приложений же есть, ужасно просто лагает. Видно проседание ФПС невооружённым глазом.

Igor
05.06.2018
16:07:49
да, просто у меня динамический список с добавлением, удалением и анимацией
ну типа не должен он лагать, не суть что там анимации или еще что-то. Я бы поставил что у тебя не во флэт листе причина и лагает еще что-то. Или компонент что ты рендеришь в итемсах или сборка дебажная все таки или консоль логи хреначат

Demuz
05.06.2018
16:09:24
возможно, может сами компоненты айтемов плохо оптимизированы
Так и есть же. Вы так и не посмотрели оптимизед флэтлист?

В стиле Тао бао сделан образец и специально просто огромнейший список.

Google
Nick
05.06.2018
16:10:12
React Navigation v2.
нет проблем с оптимизацией? чисто джаваскриптовая навигация все таки

Igor
05.06.2018
16:10:28
попробуй вместо лист итемсов ренедрить <Text />

Demuz
05.06.2018
16:12:11
нет проблем с оптимизацией? чисто джаваскриптовая навигация все таки
Нет. Но есть немного проблемы с самими разрабами, ибо они вырезали один клёвый по мне так очень удобный метод блокировки из навигационных опций скрина и добавили это в общий конфиг роутера, из-за чего пришлось переписывать пару строк кода. ?

сегодня попробую
Там невидимый элемент списка отрисовывается только по мере необходимости. Там вобще по-моему 0 элементов вверху и внизу за экраном, если резко попробуешь пролистать список, увидишь отрисовку в реальном времени.

Здесь есть анимация раскрытия списка заказанных блюд, несколько итераций, подсчет общей стоимости и стоимости с дополнительными опциями, таких элементов в этом списке около 400, здесь используется обычный скролл Вью и он абсолютно не лагает.

Nick
05.06.2018
16:20:49
по сложности примерно так же. Просто у меня проблема именно во время добавления нового айтема. Перед добавлением все замирает на пару секунд. Чем больше уже зарендереных айтемов - тем больше задержка

а что за модуль поверх рисует данные на тулбаре? для чего это?

Demuz
05.06.2018
16:22:24
по сложности примерно так же. Просто у меня проблема именно во время добавления нового айтема. Перед добавлением все замирает на пару секунд. Чем больше уже зарендереных айтемов - тем больше задержка
Понятно, ну попробуйте тот флэт лист, потом напишите тоже результат, интересно самому, ещё посмотрите, может действительно о добавлению в методах есть что-то блокирующее?

Denis
05.06.2018
16:23:07
нативные списки тоже могут подлагивать, если постараться
Постараться залагать нативный, или постараться не залагать flatlist ?

Nick
05.06.2018
16:23:26
Понятно, ну попробуйте тот флэт лист, потом напишите тоже результат, интересно самому, ещё посмотрите, может действительно о добавлению в методах есть что-то блокирующее?
хорошо. Я думал, что блокирует редакс персист и гугл аналитика, но отдебажил и понял, что именно в рендере айтемов проблема

Demuz
05.06.2018
16:25:01
а что за модуль поверх рисует данные на тулбаре? для чего это?
Ну, я сегодня сделал сессии на сервере, и подумал, что было бы удобно сделать поверх тулбара отрисовку состояния авторизации. В итоге, после ввода кода с смс видно, действительно ли сервер закрепил за клиентом авторизацию и ещё благодаря смене переменных, сразу перерендеривается левое меню дровера. А вообще, это не модуль, это просто поверх приложения тексты, у которых zIndex больше чем у остальных компонентов, ну и собердимое динамическое.

Alexander
05.06.2018
16:32:08
А как вообще дебажить приложения на react-native? Как его открыть с панелью разработчика от WebKit?

kor
05.06.2018
16:32:56
А как вообще дебажить приложения на react-native? Как его открыть с панелью разработчика от WebKit?
Плюс, как можно дебажить на Винде при разработке под андроид?

Demuz
05.06.2018
16:33:55
Плюс, как можно дебажить на Винде при разработке под андроид?
и апи продакшеновский еще под линукс, да ? ))))

Ну там вроде ремоут дебаг же есть. Локально он хорошо работает.

Alexander
05.06.2018
16:36:59
Ну там вроде ремоут дебаг же есть. Локально он хорошо работает.
Это то есть мне нужно запустить эмелятор, нам нём запустить приложение и там выбрать Удаленный дебаг?

Google
Demuz
05.06.2018
16:37:19


Это то есть мне нужно запустить эмелятор, нам нём запустить приложение и там выбрать Удаленный дебаг?
Ну да. Только я с локальными разработками неочень знаком. Но вроде ремот дебаг работает, сколько статей смотрел.

Alexander
05.06.2018
16:38:48
Спасибо за фотку доты с консолькой Source Engine

Demuz
05.06.2018
16:39:50
Спасибо за фотку доты с консолькой Source Engine
Что вы что вы. Это даже вторая версия сорса. Но на самом деле хорошо видно как кажды сервис прописан и как минимум видно откуда и что приходит, потому что когда тысячи строк, уже становится неопнятно если сервисы не именовать )

[Panorama] DispatchAsyncEvent backlog, failed to dispatch all this frame. Remaining queue depth: 4609 (was 5823)

Admin


Demuz
05.06.2018
16:40:27
Ладно, заранее извиняюсь за флуд.

Nick
05.06.2018
16:45:35
А как вообще дебажить приложения на react-native? Как его открыть с панелью разработчика от WebKit?
для дебага круто использовать Reactotron https://infinite.red/reactotron, особенно если юзаете redux

Denis
05.06.2018
17:11:57
Erik
05.06.2018
17:26:42
axios. как можно изменить global переменную в блоке .then(global user = data.data) ?

Kendr
05.06.2018
17:28:10
Если это не кс:го

Sergey
05.06.2018
17:30:00
поэтому либо используй await

либо дальше в then все прокручивай

подозревая твой вопрос- без await никак

Kendr
05.06.2018
17:31:34
Sergey
05.06.2018
17:31:49
ну и соответственно блок внутри функции async, далее try {} catch(error){}

в какой-то степени да, здесь речь идет об асинхронности, которая идет после выполнения осовного кода, инициализации переменных, например математических функций и тп

Erik
05.06.2018
17:34:33
знакомая задача, это асинхронный запрос ?
проблема в том, что требуется время для ответа от сервера ? в этом суть ?

Google
Sergey
05.06.2018
17:35:22
проблема в том, что требуется время для ответа от сервера ? в этом суть ?
это сложно осознать, например после пхп, примерно - да, просто такой асинхронности в Реакте и JS  c 2015 года оч много

и выходит, что ты делаешь глобальную переменную, которая уже проинициилизрованна до этого и старый код не может ее подхватить

а когда ты делаешь await ты стопишь исполнение программы, пока не завершится запрос, таким образом ты апдейтишь следующий блок в привычном режиме

await кажется в 2017 в начале появился

просто let a = await axios(..).then((data) => return data)

(примерно)

или this.a = ... - получаешь глобальную переменную

но стопишь весь скрипт и запрос становится как бы синхронным ?

Erik
05.06.2018
17:40:22
Спасибо за объяснение, оказались пробелы в синх / асинх.

Sergey
05.06.2018
17:40:35
ага ? нет проблем

Erik
05.06.2018
18:38:35
ага ? нет проблем
Трабл с Promise.solved(). Я жду в ответе мой словарь, но получаю Promise. Можно ли его заблокировать ? Т.е. чтобы Promise не возвращался. https://gist.github.com/ersul4ik/1e9f8c27533271c139417f6cbd1d151c

Либо достать только [[ PromiseValue ]]

Igor
05.06.2018
18:43:35
а когда ты делаешь await ты стопишь исполнение программы, пока не завершится запрос, таким образом ты апдейтишь следующий блок в привычном режиме
Тоесть await стопит поток? Где про это почитать можно? Просто вникаю в ассинхронность там грят типо вот поток не стопится и тд, памаги

Стопит поток может когда запрос вернулся?

Sergey
05.06.2018
18:43:59
он не стопит, он заставляет ждать ?

пока выполнение пройдет

Страница 680 из 878