@reactnative_ru

Страница 743 из 878
morda
17.07.2018
12:59:22
я использую react navigation и острую боль)

Denis
17.07.2018
12:59:54
Timur
17.07.2018
13:00:24
Alexander
17.07.2018
13:00:50
Artem, Timur, Vit спасибо!

Google
Ilya
17.07.2018
13:04:02
Куда без боли в РНе?)
какой вообще смысл заниматься РН, если не будет боли)

Timur
17.07.2018
13:06:33
Vladimir
17.07.2018
13:06:51
кто здесь?

Timur
17.07.2018
13:07:20
Куда без боли в РНе?)
Без сарказма спрашиваю

Nadirbek
17.07.2018
13:16:35
что такое PH?
реакт нейтив

Timur
17.07.2018
13:16:50
а, на русском что ли, я всю голову сломал)

υρ∂ουя°°
17.07.2018
13:21:12
как отправлять данные / сообщения с помощью сокращения?

Timur
17.07.2018
13:21:58
как отправлять данные / сообщения с помощью сокращения?
Откуда, куда и какого такого сокращения?

υρ∂ουя°°
17.07.2018
13:24:26
Timur
17.07.2018
13:25:05
Enter data to server? Wtf is that suppose to mean?

υρ∂ουя°°
17.07.2018
13:26:09
Enter data to server? Wtf is that suppose to mean?
yes, but I do not know how, if using redux.

Timur
17.07.2018
13:26:40
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'

Play
17.07.2018
13:26:55
Ребят не подскажите какой самый стабильный router в react-native ?
я с react-navigation перешел на react-router https://reacttraining.com/react-router/ так как у них есть решение для сайта и для SSR

Google
υρ∂ουя°°
17.07.2018
13:28:09
Timur
17.07.2018
13:31:18
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

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

υρ∂ουя°°
17.07.2018
13:37:39
Timur
17.07.2018
13:41:05
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
17.07.2018
13:54:00
native-base header потерял тень, это нормально?

style elevation не помогает

Play
17.07.2018
17:04:44
Что в shadow thread происходит?



Gena
17.07.2018
18:19:16
Что в shadow thread происходит?
В shadow thread работает yoga, которая осуществляет построение лэйаута исходя из RN'овских css-подобных св-тв, результатом этого процесса становятся проставленные св-ва (условно) x, y и width, height для каждой ноды, дальше эти св-ва отправляются в UI тред и реальные UI элементы перепозиционируются. Вот так, очень примерно.

Nick
17.07.2018
18:24:57
Интересно, спасибо. Получается что react-native связан тремя потоками с нативным кодом?
сейчас систему тредов перерабатывают, емнизп в андроиде их 4, включая render thread, который работает с android L и выше



как-то так вроде треды распределены

Play
17.07.2018
18:26:04
Nick
17.07.2018
18:26:59
это в андроид?
4й уникален для него, остальные также

tdesc
17.07.2018
18:27:02
Сколько интересно уже пожалело что взялось за rn

Google
Play
17.07.2018
18:29:10
Сколько интересно уже пожалело что взялось за rn
с чего это? взвесив все плюсы и минсы RN лучшее что есть

Nick
17.07.2018
18:30:49
давайте только без срача rn/flutter

Play
17.07.2018
18:32:20
давайте только без срача rn/flutter
интереса ради, у flutter есть решене для сайтов?

Gena
17.07.2018
18:32:39
Интересно, спасибо. Получается что react-native связан тремя потоками с нативным кодом?
Не совсем... один поток - это JS, в нем работает JSC и собственно выполняет js-код. Один UI - это основной поток приложения и в iOS и в Android многие операции с нативными API и почти все, касающиеся UI можно выполнять только из него (это так операционки эти устроены). В отдельном потоке выполняется лэйаут теневого дерева, вот эта часть могла бы выполняться в других местах теоретически, но сейчас её в отдельном потоке держат. Дальше есть ещё модули, они могут выполняться в своих потоках, так что на самом деле их больше. И именно это устройство является причиной всего геммороя, что мы имеем. Но оно такое тоже не от хорошей жизни... это попытка избежать других проблем: 1. Отдельный JS-поток - позволяет долгому циклу в JS не блокировать UI 2. Отдельный теневой поток (лэйаут) - скорей всего родился из-за того, что yoga медленная, т.к. flex-layout по определению итеративный. 3. Отдельный UI-поток - требование осей. 4. Отдельные потоки для нативных модулей позволяют авторам модулей писать говнокод и не блокировать остальные части RN

Nick
17.07.2018
18:32:45
это тот что fiber?
fiber я слышал только ui kit, в доках по тредам такого не упоминалось ?

Gena
17.07.2018
18:33:58
сейчас систему тредов перерабатывают, емнизп в андроиде их 4, включая render thread, который работает с android L и выше
Интересно... надо заглянуть в код UI Manager в Android... по ходу там что-то не так, как я себе представлял

Play
17.07.2018
18:37:54
Не совсем... один поток - это JS, в нем работает JSC и собственно выполняет js-код. Один UI - это основной поток приложения и в iOS и в Android многие операции с нативными API и почти все, касающиеся UI можно выполнять только из него (это так операционки эти устроены). В отдельном потоке выполняется лэйаут теневого дерева, вот эта часть могла бы выполняться в других местах теоретически, но сейчас её в отдельном потоке держат. Дальше есть ещё модули, они могут выполняться в своих потоках, так что на самом деле их больше. И именно это устройство является причиной всего геммороя, что мы имеем. Но оно такое тоже не от хорошей жизни... это попытка избежать других проблем: 1. Отдельный JS-поток - позволяет долгому циклу в JS не блокировать UI 2. Отдельный теневой поток (лэйаут) - скорей всего родился из-за того, что yoga медленная, т.к. flex-layout по определению итеративный. 3. Отдельный UI-поток - требование осей. 4. Отдельные потоки для нативных модулей позволяют авторам модулей писать говнокод и не блокировать остальные части RN
Да вы Генадий энциклопедия) Спасибо доходчиво!

Gena
17.07.2018
18:39:56
Я много времени убил пытаясь понять, как этот ворох безумного кода на самом деле работает (( Почему, к примеру в нативе определения св-тв многих дублируются в теневую ноду и в нормальную. Почему я не могу просто взять и получить в JS ровно тот текст, что сейчас в TextInput'е... и т.д.

Или почему если вставить неудачно SafeAreaView, то всё начинает в цикле "дрожать" на экране )))

Gena
17.07.2018
18:44:16
В ios специально это прописано: https://github.com/facebook/react-native/blob/0.56-stable/React/Base/RCTBridgeModule.h#L90 В Android так навскидку не скажу, но по моему тоже что-то подобное видел.

Stas
17.07.2018
18:45:00
В android долгие операции(в том числе говнокод) тоже нельзя на ui потоке выполнять - получите anr

https://developer.android.com/training/articles/perf-anr

Gena
17.07.2018
18:45:19
В старых версиях он в shadow-треде код модулей выполнял, сейчас создает под них свой тред под каждый.

Stas
17.07.2018
18:45:57
интересно, нужно углубиться.

Gena
17.07.2018
18:46:01
В android долгие операции(в том числе говнокод) тоже нельзя на ui потоке выполнять - получите anr
Ну понятно... просто я конкретное место, где описано поведение для нативного модуля вот так пальцем не могу показать сейчас )

Stas
17.07.2018
18:46:30
непонятно. будет ли это актуально с приходом fabric

если они выпилят асинхронный bridge

Gena
17.07.2018
18:46:52
Там только это, для точности. Я для простоты их тредами называю, но в iOS, это dispatch queue - абстракция над тредами

Google
Gena
17.07.2018
18:47:13
непонятно. будет ли это актуально с приходом fabric
Я не питаю особых иллюзий относительно fabric )

Stas
17.07.2018
18:49:07
там возможно один тред пул на один queue?

и все модули юзают одну queue?

хз, не шарю в ios. 0)0

Gena
17.07.2018
18:49:49
К примеру, я не верю, что redux-подобные архитектуры будут хорошо работать в языках процедурных по самому своему смыслу, типа C++. Либо это будет бесконечное копирование данных из одного места в памяти в другое, что очень медленно на современных процессорах. Либо это будет бесконечный lock-contention, если ленивое копирование делать.

там возможно один тред пул на один queue?
Нет, там может быть, один тред на несколько queue... GCD сам треды выделяет по необходимости...

Admin
ERROR: S client not available

Gena
17.07.2018
18:53:04
Ну вот если бы для реализации бриджа и нативного кодинга использовался бы hackell, или ещё что, специально для оптимизации functional-кода предназначенное, то да... можно было бы посмотреть, что получится... А с C++... в общем, не буду никого расстраивать своими ожиданиями )))

Gena
17.07.2018
18:53:58
Я мало знаю про фабрик, только то, что у facebook в блоге написано и то, что здесь Валентин постил.

Gena
17.07.2018
18:54:47
Там было несколько причин перехода на fabric: redux-like (и immutable), синхронные вызовы в js...

да )

Ещё типа медленный dynamic dispatch (Очевидно намек на java и ObjC)

Но я знаю другое: C++ один из самых, блин, сложных языков из широко используемых... он реально огромен... и на нем очень легко писать плохой код.

Stas
17.07.2018
18:58:27
но ведь нет альтернатив

непривычно в этом чате читать интересные вещи, а не про то, как очередной корявый npm пакет интегрировать в проект

Google
Stas
17.07.2018
19:07:48
было бы конечно смешно. фейсбук нанимает отдел хаскелистов переписывать react-native с крестов.

Arthur
17.07.2018
19:13:46
было бы проще сделать транслятор из js в С++ и все были бы счастливы

Igor
17.07.2018
19:27:02
вот бы на pure на rn пописать)
Зачем, если есть reasonml ?

Arthur
17.07.2018
19:38:32
Gena
17.07.2018
20:04:29
а зачем копировать?)
Можно не копировать (копировать лениво), но тогда надо защиту от одновременного доступа из разных потоков делать и это будет медленно )

Алексей
17.07.2018
20:05:00
так есть же иммутабельные структуры, они как раз для такого и предназначены

tdesc
17.07.2018
20:05:09
Коллекции на хешах быстро пересобираются

Специально оптимизируют жеж

Gena
17.07.2018
20:05:48
так есть же иммутабельные структуры, они как раз для такого и предназначены
Что-то я их пока в Fabric не видел... и эти структуры довольно специфичны, чтоб их для дерева нод использовать.

Алексей
17.07.2018
20:06:41
так мы про Fabric говорим что ли) я чет запутался в вашем диалоге)

Gena
17.07.2018
20:07:39
так мы про Fabric говорим что ли) я чет запутался в вашем диалоге)
Ну да... я собственно пытался обосновать свою позицию, что не жду от фабрика ничего хорошего ))

Коллекции на хешах быстро пересобираются
Там C++, мы когда-то пытались на нем google хеши использовать... типа самые быстрые... в общем да, быстро, но с кучей подводных камней, типа вырожденных случаев для которых всё становится медленным и т.п.

Вообще, с моей точки зрения, единственная архитектурная проблема RN в настоящем его виде (да, есть куча не архитектурных типа багов, платформозависимых компонентов, отсутствия некоторых критических компонентов), так вот, единственная настоящая проблема сейчас, это невозможность синхронного вызовов из натива в JS. Но это вообще не про фабрик, насколько я вижу... это про однопоточность JS... не проблема дернуть что-то туда из натива, JSC это позволяет, проблема, что тебе придется ждать, пока доработает текущий цикл JS кода... а потом отработает твой вызов. Это займет непредсказуемое время, которое твой поток будет ждать, если это UI-поток - всё зависнет на это время, если это layout - не будет лэйаута, если это твой нативный модуль, в нем не будет ничего происходить... И в текущем дизайне и вообще в любом другом дизайне без модификации JS api, я решения этой проблемы не вижу... возможно оно есть где-то в районе вывода в JS чего-то похожего на Web Workers... не знаю...

Примеры проявления этой проблемы: невозможность произвольно управлять анимациями из JS, опаздывающий measure и onLayout, проблемы с управляемым TextInput, кривая система респондеров и хендлинга тачей с огромным кол-вом багов... всякие KeyboardAvoidingView и SafeAreaView, проблема с лэйаутом кешируемых изображений и прочее...

Vladimir
17.07.2018
20:36:49
Да решение то на поверхности - блокировать UI тред в нативной части. Но тогда будет очень сложно хвастаться 60fps UI, потому что вся ответственность за конечный перфоманс ляжет на девелоперов. Скорее всего добавят апи с синхронным вызовом и огромным предупреждением, что ребят, используйте на свой страх и риск.

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