Nikita
согласен, спасибо что обратил на это внимание)
Rustem
Привет, как правильно заполнять drawerNavigator из данных которые я спарсил.
Rustem
я создал кастомный компонент и там все заполнил, все отображается. Только теперь не знаю как передать activeTintColor для открытого drawerItem.
Aynur
хранить индекс текущего?
Aynur
зависит от реализации кастомого компонента вашего
Rustem
invariance
Ребят, а почему во всех примерах делается такое:
render() {
const { firstQuery } = this.state;
...
}
invariance
ну т.е., почему надо вот эту константу объявлять
invariance
Почему напрямую не стоит работать со стейтом?
Anonymous
this.state.var, this.state.var2, this.state.var3
Anonymous
Вместо тысячи слов
invariance
т.е. это просто сокращение?
invariance
srsly?
Anonymous
т.е. это просто сокращение?
Если у тебя в коде будет повторяться this.state.var, тебе скорее всего надо будет устроить внеплановую уринотерапию
invariance
Уринотерапия за то что я не юзаю сокращение вызовов переменных в длину?
invariance
или есть все же какая-то более веская причина
invariance
Понятно
Yura
Ребята как решить такую проблему.
Весит на loading dependecy graph, done.
И связи с этим потом пишет что Could not connect to development server.
Что посоветуете сделать.
Aleks
Привет. А что, никак нельзя получить колбэк из js в java? Вижу есть Callback и Promise, но работает в обратную сторону.
invariance
Aleks
Нет, мне нужно вызвать из java кода, метод из js (который ходит в сеть) и получить данные в java.
invariance
как вариант - бросать эвент в JS "сходи туда то, возьми данные", а в листенере этого эвента отсылать данные в джаву
invariance
я не уверен если что, не приходилось писать плагины для реакта конкретно
Gena
Gena
Первое, надо перепроектировать вашу работу с данными в Java, чтоб можно было использовать асинхронный интерфейс и не делать блокирующих вызовов в сеть если что )
Gena
onLayout показывает положение относительно родителя, посмотрите на реальную иерархию ваших компонентов в react-devtools - всё поймете
Gena
FlatList (и всё, что на основе VirtualizedList построено), это абстракция, упрощение. Да, кажется у них нет встроенного способа всегда знать позицию элемента (есть onViewabilityChanged, но это другое). Но там есть способ отпозиционироваться к нужному item'у что проще с точки зрения интерфейса, вот он: https://facebook.github.io/react-native/docs/flatlist#scrolltoitem
Gena
Если вы хотите сами считать лэйаут элементов, то надо отказаться от FlatList и просто использовать ScrollView
Aleksei
Гайз, как в андроиде (в java коде) понять dev или нет сейчас? то есть аналог RCT_DEV в иос
Gena
Andrey
@vsshaposhnikov использую redux-persist для хранения нужных данных и у него есть HOC <PersistGate/>. При старте приложения ничего не рендерится пока не поднимется сохраненный стейт, в котором есть или нету токена. Если токен есть открываю основной стэк навигации, если нет - стек аутентификации
Gena
Если из пакета приложения, то: BuildConfig.DEBUG (вроде бы тоже)
Aleksei
Если из пакета приложения, то: BuildConfig.DEBUG (вроде бы тоже)
интересно что не работает так
код то простой
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
if (BuildConfig.DEBUG) {
android.preference.PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("js_bundle_deltas", false).commit();
}
}
в MainApplication
Gena
Интересно
Aleksei
наверно proguard
Gena
А чего ему тут вырезать. Этот код вроде срабатывает до инициализации ReactInstanceManager, так что к моменту инициализации RN, в настройках уже должно быть значение js_bundle_deltas
Aleksei
в общем заменил if (BuildConfig.DEBUG) на if (this.mReactNativeHost.getUseDeveloperSupport()), так что продолжу сетовать на proguard 🙂
Gena
Можно туда log вставить )
Eugene
🤔товарищи, а есть какая-нибудь годная статья по тестирование приложению, желательно какой-нибудь гайд :)
Eugene
И что вы обычно покрываете тестами?:)
Gena
И что вы обычно покрываете тестами?:)
У меня в текущем приложении очень минимально:
1. Модели и апи почти 100% покрытие юнит-тестами
2. Штук 5 критичных мелких компонентов в jest snapshots (чтоб зафиксировать дерево рендера этих компонентов, чтоб узнать где тестировать руками, когда что-то поменяется в дизайне/стилях)
3. Основной путь инициализации приложения до показа первого экрана (там замокано почти всё и тестируется логика стартапа)
Всё... на detox и что-то большее ресурсов не хватает
Eugene
Gena
1. На стороне клиента ? о-О
Да, там легко юнит тесты писать. Т.к. вся модель классическая в виде класса для каждой сущности со св-вами mobx observable... т.е. к примеру юзера можно в тестах так и создавать:
it('checks user computed props', () => {
const u = new User(model, UserSysType.Short, {
age: 30,
avatarUrl: '',
displayName: 'User1',
id: 'u1',
placeId: 'moscow',
placeName: 'Москва',
sex: 'm',
})
expect(u.isCurrent).toBeFalsy()
expect(u.isEditable).toBeFalsy()
expect(u.placeholder).toBe('ava-m')
expect(u.ageAndCityShort).toBe('30, Москва')
expect(u.ageAndCity).toBe('30 лет, Москва')
u.sex = 'f'
expect(u.placeholder).toBe('ava-f')
})
Gena
Но UI тесты так писать не получается, там всё сильно сложнее
Gena
Эта простота написания тестов и выноса из компонентов кода и логики, кстати, одна из причин по которой я mobx использую
Ivan
попался проект, где импорты без полного пути к модулям (где-то глубоко вызывается модуль на несколько уровней выше, но без ../../), но, наверно оно как-то работало, это можно как-то починить? или все пути править?
Ivan
пасиб, тут оказывается есть babel-plugin-module-resolver для этого, ток конфиг кто-то посеял
Eugene
https://www.mongodb.com/products/mobile 🤔интересно под реакт нейтив есть обвертка
Volodymyr
Есть какой-то способ сбилдить приложение так что бы работало на устройстве без шнурка и икскода ?
Eugene
🤔react-native run-ios --device --configuration Release
Serhii
Eugene
Artem
что необходимо выполнить, чтобы после линковки с помощью react-native link *name* проект собирался, а не шло все непонятно как?
Serhii
Serhii
такое никто не фиксил?
на андроиде все ок
Serhii
https://github.com/facebook/react-native/issues/22781
Andrey Kvashuk
кроме того, что объявляются стрелочные функции внутри самого рендера, вполне
Artem
а чем стралочная функция в рендере в данном случае плоха и как нужно?
Andrey Kvashuk
ну, renderItem = this.renderItem
Andrey Kvashuk
и там функцию
Gena
Почитайте пожалуйста документацию по темам:
1. pure components
2. FlatList
Andrey Kvashuk
иначе на каждый рендер будет создаватьс новая функция
Andrey Kvashuk
все не-примитивы, скорее.
Andrey Kvashuk
Так же актуально для [] и {}
Dmitry
Это в доках написано
Dmitry
Нужно использовать то, что необходимо
Dmitry
Они дают выбор, либо полагаться на сравнение внутри PureComponent, либо делать сравнение внутри shouldComponentUpdate у обычного Component
Dmitry
Но уже осознанно
Danila
встречал такой подход - по умалчанию юзать PureComponent (в целях оптимизации), при необходимости писать shouldComponentUpdate (если более глубокое сравнение нужно)
Gena
Нет конечно же )) Надо использовать то, что необходимо )
Danila
Gena
Как вам и написали выше
Gena
Кстати, если кому интересно: http://blog.nparashuram.com/2019/01/react-natives-new-architecture-glossary.html
Dmitry
Danila
я по старинке еще
Dmitry