Кирилл
Ios, с андроидом не пробовал. Лично у меня при переходе на экран где рендерится что-то с onLayout'ом приводит к тому что эмулятор зависает. Даже ошибок не выводит
Gena
Гм... с ios я много работаю... ни разу такого не было... Были циклы релайаута, либо из-за ошибки в своем коде, либо из-за багов в RN, как например SafeAreaView - там этот компонент принципиально некорректно сделан. Но это проявлялось не как зависание, а как постоянное "дрожание" элементов на экране...
Имя
Ребята, добрый день. Знает кто как решить данную проблему? Прошел по ссылке, но там все как то абстрактно upd: связка rn+react navigation + redux
A
коллеги, а как проверяете ошибки сети? типа действие совершить не удалось - "try again later"
A
Formik + yup https://github.com/jaredpalmer/formik https://github.com/jquense/yup
а как передать ошибки апи в formik ?
Gena
measure помогает, когда надо узнать что-то в конкретный момент, в частности когда протекают какие-то нативные анимации, у которых нет колбеков
Когда приходит ответ на measure, эти данные уже не соответствуют действительности, следовательно это принципиально некорректно использовать с целью узнать что-то в "конкретный момент". Поэтому я стараюсь такое вообще не использовать и пока это получалось (но да, я не делал много анимаций). Там есть ещё один ньюанс, который, похоже делает measure единственным способом работы при кастомных анимациях... сейчас смотрю вот в код... и да, onLayout возвращает данные посчитанные лэйаут движком, а measure возвращает данные о положении реальных вьюх, как раз то, что менятся при анимациях.
Andrey
ребят, а кто что использует в rn на подобии lightbox?
Никита
ребят, а кто что использует в rn на подобии lightbox?
есть react-native-lightbox и react-native-image-viewer вроде
Миша
А в Андроиде все интуитивно понятно
завидую людям с такой интуицией
Peter
ребят, а кто что использует в rn на подобии lightbox?
Что то подобное сам писал, потом времени было до ума довести.
Кирилл
Note: The weird function signature is due to the fact that, for historical reasons, the function also accepts separate arguments as an alternative to the options object. This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED. Хорошая все таки документация у нативки
ᛖᚹᛋᛁᚱ
завидую людям с такой интуицией
Я говорил не про сборку, а про публикацию приложения
Peter
iOS поддерживает
Ivan
ios да, android - elevation
Alexander
Ребят не подскажите какой самый стабильный router в react-native ?
Alexander
проверенный временем, надежный
Artem
Нет таких
Alexander
ну хоть такой... более менее нормальный
Artem
ну хоть такой... более менее нормальный
Самый популярный наверное https://reactnavigation.org/ сейчас + на нативных классах от wix https://github.com/wix/react-native-navigation
Vit
я использую react navigation и острую боль)
[object Object]
Alexander
Artem, Timur, Vit спасибо!
Ilya
какой вообще смысл заниматься РН, если не будет боли)
[object Object]
что такое PH?
Владимир
кто здесь?
[object Object]
Без сарказма спрашиваю
Имя
что такое PH?
реакт нейтив
[object Object]
а, на русском что ли, я всю голову сломал)
ㅤㅤㅤㅤㅤ
как отправлять данные / сообщения с помощью сокращения?
[object Object]
как отправлять данные / сообщения с помощью сокращения?
Откуда, куда и какого такого сокращения?
ㅤㅤㅤㅤㅤ
[object Object]
Enter data to server? Wtf is that suppose to mean?
ㅤㅤㅤㅤㅤ
Enter data to server? Wtf is that suppose to mean?
yes, but I do not know how, if using redux.
[object Object]
I want to enter data to server with redux
If you wanna send data to server, there are multiple solutions. The simpliest is 'redux thunk', but i personally prefer 'redux saga'
[object Object]
what redux saga is the same as redux thunk? could you have a simple example?
No, they are not the same, but both could solve your problem. If i were you i would choose redux thunk as a more simple solution. You can read more about it here: https://github.com/reduxjs/redux-thunk
[object Object]
what redux saga is the same as redux thunk? could you have a simple example?
But first you need to know, what a redux middleware is. These are the basics of redux, if you dont know it, then you should go through tutorials on official website of redux
[object Object]
thanks, and i'm still learning redux, what i understand is redux store and other reducer still not understand
Well it's not the place where somebody would teach you the basics. You should teach yourself. This community is only to give you directions or some little tipps
Aynur
native-base header потерял тень, это нормально?
Aynur
style elevation не помогает
Gena
В shadow thread работает yoga, которая осуществляет построение лэйаута исходя из RN'овских css-подобных св-тв, результатом этого процесса становятся проставленные св-ва (условно) x, y и width, height для каждой ноды, дальше эти св-ва отправляются в UI тред и реальные UI элементы перепозиционируются. Вот так, очень примерно.
Nick
сейчас систему тредов перерабатывают, емнизп в андроиде их 4, включая render thread, который работает с android L и выше
Nick
Nick
как-то так вроде треды распределены
Nick
4й уникален для него, остальные также
tdesc
Сколько интересно уже пожалело что взялось за rn
Nick
давайте только без срача rn/flutter
Gena
Не совсем... один поток - это JS, в нем работает JSC и собственно выполняет js-код. Один UI - это основной поток приложения и в iOS и в Android многие операции с нативными API и почти все, касающиеся UI можно выполнять только из него (это так операционки эти устроены). В отдельном потоке выполняется лэйаут теневого дерева, вот эта часть могла бы выполняться в других местах теоретически, но сейчас её в отдельном потоке держат. Дальше есть ещё модули, они могут выполняться в своих потоках, так что на самом деле их больше. И именно это устройство является причиной всего геммороя, что мы имеем. Но оно такое тоже не от хорошей жизни... это попытка избежать других проблем: 1. Отдельный JS-поток - позволяет долгому циклу в JS не блокировать UI 2. Отдельный теневой поток (лэйаут) - скорей всего родился из-за того, что yoga медленная, т.к. flex-layout по определению итеративный. 3. Отдельный UI-поток - требование осей. 4. Отдельные потоки для нативных модулей позволяют авторам модулей писать говнокод и не блокировать остальные части RN
Nick
fiber я слышал только ui kit, в доках по тредам такого не упоминалось 🤔
Gena
сейчас систему тредов перерабатывают, емнизп в андроиде их 4, включая render thread, который работает с android L и выше
Интересно... надо заглянуть в код UI Manager в Android... по ходу там что-то не так, как я себе представлял
Gena
Я много времени убил пытаясь понять, как этот ворох безумного кода на самом деле работает (( Почему, к примеру в нативе определения св-тв многих дублируются в теневую ноду и в нормальную. Почему я не могу просто взять и получить в JS ровно тот текст, что сейчас в TextInput'е... и т.д.
Gena
Или почему если вставить неудачно SafeAreaView, то всё начинает в цикле "дрожать" на экране )))
Gena
В ios специально это прописано: https://github.com/facebook/react-native/blob/0.56-stable/React/Base/RCTBridgeModule.h#L90 В Android так навскидку не скажу, но по моему тоже что-то подобное видел.
Stas
В android долгие операции(в том числе говнокод) тоже нельзя на ui потоке выполнять - получите anr
Stas
https://developer.android.com/training/articles/perf-anr
Gena
В старых версиях он в shadow-треде код модулей выполнял, сейчас создает под них свой тред под каждый.
Stas
интересно, нужно углубиться.
Gena
В android долгие операции(в том числе говнокод) тоже нельзя на ui потоке выполнять - получите anr
Ну понятно... просто я конкретное место, где описано поведение для нативного модуля вот так пальцем не могу показать сейчас )
Stas
непонятно. будет ли это актуально с приходом fabric
Stas
если они выпилят асинхронный bridge
Gena
Там только это, для точности. Я для простоты их тредами называю, но в iOS, это dispatch queue - абстракция над тредами
Gena
непонятно. будет ли это актуально с приходом fabric
Я не питаю особых иллюзий относительно fabric )
Stas
там возможно один тред пул на один queue?
Stas
и все модули юзают одну queue?
Stas
хз, не шарю в ios. 0)0
Gena
К примеру, я не верю, что redux-подобные архитектуры будут хорошо работать в языках процедурных по самому своему смыслу, типа C++. Либо это будет бесконечное копирование данных из одного места в памяти в другое, что очень медленно на современных процессорах. Либо это будет бесконечный lock-contention, если ленивое копирование делать.
Gena
там возможно один тред пул на один queue?
Нет, там может быть, один тред на несколько queue... GCD сам треды выделяет по необходимости...
Gena
Ну вот если бы для реализации бриджа и нативного кодинга использовался бы hackell, или ещё что, специально для оптимизации functional-кода предназначенное, то да... можно было бы посмотреть, что получится... А с C++... в общем, не буду никого расстраивать своими ожиданиями )))
Gena
Я мало знаю про фабрик, только то, что у facebook в блоге написано и то, что здесь Валентин постил.