I
мало вводных, я не понял всю картину)
на это забей, я думаю такая подгрузка из-за встроенной в ListView оптимизации
Aleksei
можно промисами тоже самое сделать
I
а как я её разделю?
Aleksei
(это конечно если не хочешь воркеры)
Aleksei
а как я её разделю?
давай код в студию)
Aleksei
только не так
Aleksei
гист
I
почеиу
I
ща
I
https://gist.github.com/xahon/b9121ca07756260890c24afe201eb7da
I
там не весь код, а только получение чата и нормализация
Aleksei
https://gist.github.com/xahon/b9121ca07756260890c24afe201eb7da
я не мастер в normalizr но есть ощущение что для этой задачи придется выкинуть его 😉
I
без него было еще хуже
I
получается каша
Aleksei
добавь пример json-а и какой результат из него получается плиз
Aleksei
только небольшой)
Andrey
ребят, кто юзает react native router flux, кто-нибудь делал кнопку, которая обновляет экран? То есть просто принудительно взять по нажатию кнопки и перерендерить то, что открыто?
Sergey
Actions.refresh() - Reloads the current scene by loading new props into the Scene
Sergey
https://github.com/aksonov/react-native-router-flux/blob/master/docs/API.md
I
проп в верхнем компоненте создать?
Вот пример https://gist.github.com/xahon/d255cc1df16296ad322f636ae4cbb651
Andrey
спасибо!
Aleksei
Вот пример https://gist.github.com/xahon/d255cc1df16296ad322f636ae4cbb651
я бы как то так сделал https://gist.github.com/savelichalex/18572e0e46a1e8ca27181c5ca5cd7c9a (на коленке писал, не проверял 🙂)
I
если все в промисы обернуть, то будет в отдельном потоке каждый работать?
Aleksei
https://facebook.github.io/react-native/docs/timers.html
> The Promise implementation uses setImmediate as its asynchronicity primitive.
Aleksei
либо как вариант переписать все с requestAnimationFrame
I
про requestAnimationFrame читал только один раз и так не понял для чего, думал для анимации и забил. Тут есть интересный момент InteractionManager.runAfterInteractions(() => { // ...long-running synchronous task... });Ты его пробовал использовать?
I
а как через rAF делать? Каждую такую тяжелую функцию в await requestAnimationFrame(longExecutingFunction)?
I
или в реактовском компоненте где точка вызова вот этого фетча и там обернуть её в rAF
Aleksei
нужно в том гисте что я скинул все вызовы промисов переделать на rAF. await работает только с промисами, поэтому они проще
I
@savelichalex а есть какая-нибудь разница по производительности promise vs rAF?
Aleksei
@savelichalex а есть какая-нибудь разница по производительности promise vs rAF?
дело не в производительности, а в том как они работают
I
Ладно, спасибо, буду разбираться
Anonymous
Привет, что посоветуете для работы с FCM (https://firebase.google.com/docs/cloud-messaging/) ??
Alex
Привет, что посоветуете для работы с FCM (https://firebase.google.com/docs/cloud-messaging/) ??
Если чисто для пушей - то если не жалко отдавать пользовательские данные - гораздо проще и удобнее использовать one signal )
Vit
react-native-fcm
Vit
че гадать-то)
דָּנִיֵּאל
Всем привет! Подскажите плз по реакт гавигейшн, есть ли какой-то коллбек на back экшн (когда нажимаешь дефолтную кнопку назад, которую рендерит сам навигатор)? Спасибо)
דָּנִיֵּאל
*навигейшн
Egor
Почему может быть нехорошо писать: onPress={this._onTabPress.bind(this)}
דָּנִיֵּאל
Потому что инициализируется функция еще раз
Egor
то есть если это в коде элемента списка, то будет много раз продублировано?
Kirill
Почему может быть нехорошо писать: onPress={this._onTabPress.bind(this)}
потому что каждый раз создается новая функция и shallowCompare будет говорить что дерево изменилось -> нужно перерендерить
Egor
о, аргумент
Egor
спасибо
Egor
а то мне ESLint ругнулся, а я и не в курсе подоплеки...
Alex
onPress={_ => this.onTabPress()}
Alex
?
Egor
ну если не обойтись без bind
Egor
то в конструкторе забиндить
Kirill
нет, надо ссылаться всегда на одну функцию
Egor
а там уже нормально
Egor
onPress={this._onTabPress}
Kirill
то в конструкторе забиндить
зачем? class Foo { bar = () => {} render() {return <Bazz onPress={this.bar}>} }
Kirill
стрелочной функцией просто контекст сохраняешь и се
Egor
хм... но тогда bind выглядит вообще бесполезной вещью, а у меня тут кое-где да используется. надо вспоминать почему да зачем...
Egor
были какие-то причины значит
Egor
вот у меня есть компонент сейчас
Egor
у него в props есть onTap
Egor
а в рендере у меня написано <TouchableHighlight key={index} onPress={onTap.bind(this, goal)}
Egor
ладно
Kirill
по хорошему надо создать метод в этом компоненте и из него уже вызывать this.props.onTap с нужными параметрами
Андрей
Работает?
Egor
тут сложно очень
Egor
у меня тут еще цикл
Egor
{goals.map((goal, index) => { const isGroup = _isGoalGroup(goal) return ( <TouchableHighlight key={index} onPress={onTap.bind(this, goal)}...
Egor
короче жесть
Kirill
у меня тут еще цикл
в этом случае создается отдельный компонент, который принимает колбэк и данные, который надо в этот колбэк передать
Aleksei
да эт необязательно, не у всех есть shallowCompare и PureComponent в дочерних элементах
Egor
надо бы переписать это всё
Aleksei
вон в фб недавно постили что лента новостей у них без единого sCU и норм живет)
Kirill
вон в фб недавно постили что лента новостей у них без единого sCU и норм живет)
насколько я помню при sCU не вызовется render метод, если вызовется, то это не значит что фактически будет перерисовка. Все равно сравнивается дерево, и если оно не изменилось, то избегаем лишних движений