Yar
Нет, не помню такого.
Может как-то с вот этим связано:
TODO: now that AppState is a subclass of NativeEventEmitter, we could deprecate addEventListener and removeEventListener and just use addListener and listener.remove() directly. That will be a breaking change though, as both the method and event names are different (addListener events are currently required to be globally unique).
Kirill
Ребят, есть Навигейшен дровер, я перехожу через него на другой экран, потом возвращаюсь на другой и тот state остается такой же как когда я и покидал страницу.
К примеру у меня на одно экране есть 4 шага заказа продукта
this.state={
firstStep:true,
secondStep:false,
threeStep:false,
}
Я покинул эту страницу, потом опять захожу и у меня весь стейт не сбрасывается до значений по умолчанию
Preeternal
Даже скролл позицию должно запоминать
Kirill
ну, я не хочу. чтобы у меня стейт сохранялся той страницы, если я ее покинул
Gena
Это очень похоже на особенность исполнения кода на стороне дебаггера. А вы вот это без дебаггера хоть раз наблюдали?
Артем
как предлагаешь без дебагера в консоли увидеть?
Gena
Gena
Если это Android, то adb никто не отменял
Gena
На всякий случай ещё раз напомню. Работать с дебаггером постоянно опасно. Ваш код выполняется не в телефоне в JSC, а в дебаггере в V8. Это принципиально разные движки.
Артем
завтра гляну, спасибо))
Gena
Более того, код сперва сабмитится в дебаггер, там выполняется, и результат сабмитится назад в девайс. Таким образом это асинхронный процесс, что видимо в этом ворнинге и выражается
Артем
а чем опасно?
Gena
Опасно тем, что потом придется искать почему внезапно все падает на реальном девайсе )
Gena
Раньше ещё веселей было (сейчас вроде починили, но не уверен что до конца и везде). Раньше HTTP запросы тоже из дебаггера уходили, когда приложение их делало.
Артем
понял, принял:)
Ruslan
Gena
Существенно? Это какого же объема там оригинальный текст?
Aleksei
я бы наоборот хотел уменьшить количество логов в xcode, особенно всякие nw_connection 🙂
Ruslan
Существенно? Это какого же объема там оригинальный текст?
Бывали огромные данные в проде, когда участвовал в разработке мобильного банкинга, то там большие данные прилетали и когда надо было даже небольшой объект вытащить через console.log то рендерилось как то очень странно обрезало
Ruslan
Вот про 2 не знал, теперь буду делать его асинком
Ruslan
За это спасибо
Ruslan
Век живи и учись)
Gena
А nw_connection меня тоже бесят и, главное, не выпилить их никак... это Apple из своего CFNetwork сыплет 🙊
Ruslan
Так все таки получается, что нужно очень аккуратно использовать дебагинг в хроме remote? Как он потом прод валит?
Aleksei
Gena
хм, а точно синхронный? вроде же так же через бридж
Точно! )))
Оно там сначала прям в JS в полифилле console.* строку форматирует - это уже не быстро. А потом дергает вот сюда: https://github.com/facebook/react-native/blob/0.58-stable/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp#L140
Aleksei
кстати JSC логи через сафари можно довольно легко посмотреть) единственное раздражает что при рефреше надо новую сессию каждый раз открывать
Gena
Ruslan
Aleksei
Вообще если бы решилась как то проблема с nw_connection я бы юзал самописный логер, а то сделал на основе NSLogger, а он NSLog оборачивает тоже, и получаются портянки из-за которых собственных логов не видно)
Aleksei
или можно remote debugger сделать на основе какой нибудь node.js с JSC внутри)
Kirill
Привет, ребят, вопрос, есть NavigationDrawer, когда я с одной страницы перехожу на другую и возвращаюсь обратно то состояние, которое было на странице осталось, как можно сделать, чтобы оно пересоздавалось ? Мне чтобы когда делаешь пошаговое оформление заказа начиналось с самого начала и те поля, которые были выбраны при оформлении прошлого не были заполнены в новом.
Gena
Кстати, пока не забыл. Есть одно интересное наблюдение про console и скорость, сам я туда не полезу - мы минимум туда выдаем, а всё самое интересное отдельно в Sentry шлем (там кстати и последние страницы os_log'а присутствуют при этом).
Дело в том, что в console.log может именно его формат тормозить, тот который в JS написан. Я тут его завесил, пока дебажил touchables - events пытался туда засунуть, которые в onResponder* приходят во View. И попробовал сериализовать их через https://github.com/deecewan/browser-util-inspect (первое, что в гугле нашлось). Так вот. Оно не только заработало, но по ощущениям ещё и очень шустро. Дальше не исследовал, узнал что меня интересует и удалил модуль.
Eugene
Ну то что console log тормозной, вроде давно факт)
Aleksei
Кстати, пока не забыл. Есть одно интересное наблюдение про console и скорость, сам я туда не полезу - мы минимум туда выдаем, а всё самое интересное отдельно в Sentry шлем (там кстати и последние страницы os_log'а присутствуют при этом).
Дело в том, что в console.log может именно его формат тормозить, тот который в JS написан. Я тут его завесил, пока дебажил touchables - events пытался туда засунуть, которые в onResponder* приходят во View. И попробовал сериализовать их через https://github.com/deecewan/browser-util-inspect (первое, что в гугле нашлось). Так вот. Оно не только заработало, но по ощущениям ещё и очень шустро. Дальше не исследовал, узнал что меня интересует и удалил модуль.
я еще замечал что если ивент с нативного модуля логировать не вытаскивая nativeEvent то может вообще крашнуться
Gena
Gena
Вообще если бы решилась как то проблема с nw_connection я бы юзал самописный логер, а то сделал на основе NSLogger, а он NSLog оборачивает тоже, и получаются портянки из-за которых собственных логов не видно)
У меня, кстати этой проблемы нет сейчас (верней есть, но там только мои реконнекты, когда WebSocket отваливается). Это достигается двумя вещами:
1. Я вырубаю их собственную внутреннюю закладку, которая куда-то коннектиться пытается в Podfile вот так:
post_install do |installer|
# Disable some shitty RN stuff (I can't see degradation in functional)
installer.pods_project.targets.each do |target|
if target.name == 'React'
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)']
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << 'RCT_ENABLE_INSPECTOR=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << 'ENABLE_PACKAGER_CONNECTION=0'
end
end
end
end
2. Просто запускаю standalone react-devtools и вторая часть реконнектов пропадает
Gena
А и двойные логи в Xcode убираю путем переопределения RCTSetLogFunction, но это если надо, через gist тогда выложу... там много
Aleksei
Gena
Они вот здесь: https://github.com/facebook/react-native/blob/0.58-stable/React/Base/RCTDefines.h#L49
Проблема, что, похоже, никто кроме тех кто ими пользуется в фейсбуке, не знает зачем это
Gena
Этот функционал надо бы опциональным сделать (лучше даже вообще реализовать через хуки отдельным модулем и убрать из OSS), но это долго и сложно. И как тестировать непонятно. Я в итоге не стал додумывать пока и PR собирать... Может сам как нибудь выпилится )))
sanqa
а jsc кто нибудь обновлял руками ?доклад видел про типо боль в rn, там чувак говорил что они его обновляли
Dmitry
Dr
Привет. Кто-нибудь работал с react-native-webrtc? сталкивались с такой проблемой что стрим зависает примерно через секунды 3-4 после начала? преимущественно на ios это просиходит
Ilya
Dr
да нет, вроде один
Dr
а не реализовывали такую штуку, что бы мьютит только звук приходящего стрима?
Dr
просто как я понял в этой библиотеки не раелизована фишка, что бы можно было приходящий стрим резать. Сделали такую штуку, через сокет шлем евент, и потом удаленный девай сам свой локальный стрим рубит. С видео проблем вроде нет, а вот аудио работает абсолютно так же как видео, но бывает что если выключишь, то потом включить уже не получается
Andrew Kiselev
@gblack9 @savelichalex а пробовали использовать babel-plugin-transform-remove-console чтобы сократить логов?
Aleksei
Andrew Kiselev
D
народ как в навигации в одном месте показывать топбар а в некоторых нет:
я пытаюсь так:
export const AppNavigator = createStackNavigator(
routes,
{
initialRouteName: keys.Login,
navigationOptions: {
header: null,
},
headerMode: 'none',
},
{
initialRouteName: keys.Pin,
navigationOptions: {
header: null,
},
headerMode: 'none',
},
{
initialRouteName: keys.Request,
navigationOptions: {
header: true,
headerStyle: {
backgroundColor: '#fff'
}
},
},
оно не показывает на логине и пин а в реквесте должно показывать но нехочет
В чем дело?
);
Rustem
Привет всем! У меня есть DrawerNavigator и где то 10 menuItem. Все они указывают на один StackNavigator, так как view у всех одинаковый только разные данные. Вопрос, как отправлять разные id из DrawerNavigator в StackNavigator?
Ruslan
Rustem
Ruslan
Да в массиве, но я не знаю как именно передавать.
При рендере каждого элемента в цикле, на onClick вы вешаете один и тот же метод перехода навигации, куда кладете ваши id по очереди вот примерно так,
this.props.data.map(menuItem =>
<View
onClick={() => this.props.goToDetails(menuItem.id)}
>
{menuItem.title}
</View>
)
Artur
парни дропните ссылочку, тут в чатике мелькала
Artur
сборник всяких полезностей по RN на гитхабе
Vladimir
https://github.com/jondot/awesome-react-native ?
Artur
да про awesome помню, была ещё на русском
Артем
может кто пользовался cloud firestore? когда заношу данные в офлайн режиме они сразу выводятся все нормально, но когда включаю интернет, то данные не отправляются на сервер
Petr E
Подскажите пожалста, как называется такая модалка, которую если потянуть в низ то она закроется?
Petr E
мелькало в чате как-то давно
Alexander
Petr E
Gena
Alexey
Aleksei
Gena
😄 Да. Чтоб тут тоже осталось:
- это вырубает полностью логи на реальном девайсе.
- это вырубает системный логгинг из приложения, что может скрыть причины ошибок
Я сейчас столько тупил потому что опять перечитывал тред в тематическом issue и думал, может зря я там воевал так тогда? Они ж теперь fishhook впилили, что выглядит как решение, но в 1000 раз хуже даже OS_ACTIVITY_MODE
https://github.com/facebook/react-native/issues/10027
Gena
И заметьте, весь этот шум и пляска только потому, что авторы RN считают что ради улучшения developer experience можно за программиста решать что ему нужно, а что нет. Вот единственная строчка кода, которая должна как в вебе вставляться самим программистом, но вставляется авторами фреймворка в неотключаемом виде: https://github.com/facebook/react-native/blob/0.58-stable/Libraries/Core/setUpDeveloperTools.js#L21 (На самом деле не одна, ещё две какие-то странные закладки, про которые утром говорили, которые можно макросами отключить)
Gena
Даже нет, вот он, шпион заморский: https://github.com/facebook/react-native/blob/0.58-stable/Libraries/Core/Devtools/setupDevtools.js#L40-L47
Gena
Кстати! Это же теперь, когда бабел вроде нормально работает, легко фиксится 👹
Maxim
у меня сейчас приложение запускается в pre-build, как запускать в debug?
Maxim
ios
Aleksei