@reactnative_ru

Страница 288 из 878
Алексей
04.09.2017
09:26:09
а я понял в чем лаг, в normalizr
а в какой момент он срабатывает?

Ilya
04.09.2017
09:26:09
мне systrace очень сложным показался

когда фетчишь чат

Алексей
04.09.2017
09:26:29
перед записью в стор?

Google
Ilya
04.09.2017
09:26:30
приходит большой джсон

да

Arthur
04.09.2017
09:27:08
приходит большой джсон
Приходит много данных и вешается js поток

Алексей
04.09.2017
09:27:08
может разделить как то на части и в setImmediate засунуть каждую часть

чтобы ui не фризить

Ilya
04.09.2017
09:27:47
Я даже не знал такой функции

а почему уи фризится то, я думал там 2 потока, джс и уи отдельно

Алексей
04.09.2017
09:28:12
Я даже не знал такой функции
https://facebook.github.io/react-native/docs/timers.html

так у тебя не фризится же, а лаги, так?

Ilya
04.09.2017
09:28:57
ну вот если джс тред падает до -2 или 0 то уи фризится

ну вот именно фризится, а потом несколько секунд подлагивает

когда табы щелкаешь

Google
Алексей
04.09.2017
09:29:35
фризится так что scrollview даже не скролится?;)

не, когда ты табы тыкаешь, идет ивент в js, а он в это время занят

Ilya
04.09.2017
09:30:24
еще кстати после этого когда ListView скроллишь он как-будто подгружает сообщения, хотя я там не делал подгрузки и весь массив сообщений в сторе уже в это время

скролл листается

Ilya
04.09.2017
09:32:52
да

-2 показывает

Алексей
04.09.2017
09:33:02
тебе надо нормализацию разделить на чанки

и каждый чанк в setImmediate

Ilya
04.09.2017
09:33:22
мало вводных, я не понял всю картину)
на это забей, я думаю такая подгрузка из-за встроенной в ListView оптимизации

Алексей
04.09.2017
09:33:24
можно промисами тоже самое сделать

Ilya
04.09.2017
09:33:43
а как я её разделю?

Алексей
04.09.2017
09:33:48
(это конечно если не хочешь воркеры)

а как я её разделю?
давай код в студию)

только не так

гист

Ilya
04.09.2017
09:34:16
почеиу

Google
Ilya
04.09.2017
09:34:24
ща

https://gist.github.com/xahon/b9121ca07756260890c24afe201eb7da

там не весь код, а только получение чата и нормализация

Алексей
04.09.2017
09:39:40
https://gist.github.com/xahon/b9121ca07756260890c24afe201eb7da
я не мастер в normalizr но есть ощущение что для этой задачи придется выкинуть его ?

Ilya
04.09.2017
09:39:57
без него было еще хуже

получается каша

Алексей
04.09.2017
09:41:55
добавь пример json-а и какой результат из него получается плиз

только небольшой)

Andrey
04.09.2017
09:46:43
ребят, кто юзает react native router flux, кто-нибудь делал кнопку, которая обновляет экран? То есть просто принудительно взять по нажатию кнопки и перерендерить то, что открыто?

Andrey
04.09.2017
09:48:40
Sergey
04.09.2017
09:49:31
Actions.refresh() - Reloads the current scene by loading new props into the Scene

https://github.com/aksonov/react-native-router-flux/blob/master/docs/API.md

Ilya
04.09.2017
09:51:06
проп в верхнем компоненте создать?
Вот пример https://gist.github.com/xahon/d255cc1df16296ad322f636ae4cbb651

Andrey
04.09.2017
09:52:06
спасибо!

Алексей
04.09.2017
10:08:13
Вот пример https://gist.github.com/xahon/d255cc1df16296ad322f636ae4cbb651
я бы как то так сделал https://gist.github.com/savelichalex/18572e0e46a1e8ca27181c5ca5cd7c9a (на коленке писал, не проверял ?)

Ilya
04.09.2017
10:13:58
если все в промисы обернуть, то будет в отдельном потоке каждый работать?

Алексей
04.09.2017
10:16:45
https://facebook.github.io/react-native/docs/timers.html
> The Promise implementation uses setImmediate as its asynchronicity primitive.

либо как вариант переписать все с requestAnimationFrame

Google
Ilya
04.09.2017
10:20:44
про requestAnimationFrame читал только один раз и так не понял для чего, думал для анимации и забил. Тут есть интересный момент InteractionManager.runAfterInteractions(() => { // ...long-running synchronous task... });Ты его пробовал использовать?

Ilya
04.09.2017
10:26:06
а как через rAF делать? Каждую такую тяжелую функцию в await requestAnimationFrame(longExecutingFunction)?

или в реактовском компоненте где точка вызова вот этого фетча и там обернуть её в rAF

Алексей
04.09.2017
10:29:23
нужно в том гисте что я скинул все вызовы промисов переделать на rAF. await работает только с промисами, поэтому они проще

Ilya
04.09.2017
10:44:24
@savelichalex а есть какая-нибудь разница по производительности promise vs rAF?

Алексей
04.09.2017
10:44:51
@savelichalex а есть какая-нибудь разница по производительности promise vs rAF?
дело не в производительности, а в том как они работают

Ilya
04.09.2017
11:06:08
Ладно, спасибо, буду разбираться

Mikhail
04.09.2017
11:52:19
Привет, что посоветуете для работы с FCM (https://firebase.google.com/docs/cloud-messaging/) ??

Alexander
04.09.2017
12:12:52
Привет, что посоветуете для работы с FCM (https://firebase.google.com/docs/cloud-messaging/) ??
Если чисто для пушей - то если не жалко отдавать пользовательские данные - гораздо проще и удобнее использовать one signal )

morda
04.09.2017
12:31:28
react-native-fcm

че гадать-то)

Daniel
04.09.2017
13:19:23
Всем привет! Подскажите плз по реакт гавигейшн, есть ли какой-то коллбек на back экшн (когда нажимаешь дефолтную кнопку назад, которую рендерит сам навигатор)? Спасибо)

*навигейшн

Egor
04.09.2017
13:19:51
Почему может быть нехорошо писать: onPress={this._onTabPress.bind(this)}

Daniel
04.09.2017
13:21:06
Потому что инициализируется функция еще раз

Egor
04.09.2017
13:22:43
то есть если это в коде элемента списка, то будет много раз продублировано?

Кирилл
04.09.2017
13:26:18
Почему может быть нехорошо писать: onPress={this._onTabPress.bind(this)}
потому что каждый раз создается новая функция и shallowCompare будет говорить что дерево изменилось -> нужно перерендерить

Google
Egor
04.09.2017
13:26:45
о, аргумент

спасибо

а то мне ESLint ругнулся, а я и не в курсе подоплеки...

Alexander
04.09.2017
13:32:15
onPress={_ => this.onTabPress()}

?

Egor
04.09.2017
13:32:48
ну если не обойтись без bind

то в конструкторе забиндить

Кирилл
04.09.2017
13:32:54
нет, надо ссылаться всегда на одну функцию

Egor
04.09.2017
13:32:57
а там уже нормально

onPress={this._onTabPress}

Кирилл
04.09.2017
13:33:58
то в конструкторе забиндить
зачем? class Foo { bar = () => {} render() {return <Bazz onPress={this.bar}>} }

стрелочной функцией просто контекст сохраняешь и се

Egor
04.09.2017
13:36:20
хм... но тогда bind выглядит вообще бесполезной вещью, а у меня тут кое-где да используется. надо вспоминать почему да зачем...

были какие-то причины значит

Egor
04.09.2017
13:37:34
вот у меня есть компонент сейчас

у него в props есть onTap

а в рендере у меня написано <TouchableHighlight key={index} onPress={onTap.bind(this, goal)}

ладно

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