
Вася
24.07.2017
19:16:53
ну и сам setState
https://github.com/facebook/react/blob/master/src/isomorphic/modern/class/ReactBaseClasses.js#L59
а, не, вот
https://github.com/facebook/react/blob/b1768b5a48d1f82e4ef4150e0036c5f846d3758a/src/renderers/shared/stack/reconciler/ReactUpdateQueue.js#L208

Google

Вася
24.07.2017
19:20:42
короче чет на ночь глядя сложно

Сергей
24.07.2017
19:21:22

Igor
24.07.2017
19:21:28
я честно говоря не понял тон дискусии но setState дейстивтельно асинхронный тк изменения батчаться к след циклу апдейта и вообще вроде там собираются форсить в документации чтобы все использовали функциональную форму setState

Вася
24.07.2017
19:22:04

Disa
24.07.2017
19:22:11
не, ладно, я наверно тупой. но я не вижу там каких-либо асинхронных действий. То есть, он записывает новое состояние, но просто тебе его ещё не отдает, а только после хуков

Igor
24.07.2017
19:22:15

Вася
24.07.2017
19:22:40

Igor
24.07.2017
19:22:43
там одна из фишек в этом, сейчас попробую найти обзор

Сергей
24.07.2017
19:22:48

Igor
24.07.2017
19:22:58

Вася
24.07.2017
19:23:10
ну я знаю что такое файбер

Сергей
24.07.2017
19:23:23

Disa
24.07.2017
19:23:40

Google

Вася
24.07.2017
19:23:46
я про то что файбер походу меняет имплементацию сет стэйта, то есть не тот который сейчас
а нас интересует теперешний
я думал никто не знает)
ну я хз как он изнутри, знаю что рендер разбивает на мелкие кусочки хитро, а что, как, хз. пока не интересно

Igor
24.07.2017
19:26:26
у кого много свободного времени можно читать там https://github.com/facebook/react/issues/7942

Вася
24.07.2017
19:27:23

Igor
24.07.2017
19:34:41
кстати насчет асинхронности setState https://facebook.github.io/react/contributing/design-principles.html#scheduling
To be clear, we are not taking advantage of this right now. However the freedom to do something like this is why we prefer to have control over scheduling, and why setState() is asynchronous. Conceptually, we think of it as "scheduling an update".

Котяй Негодяй
24.07.2017
19:40:17
redux-act vs redux-actions.
И почему?

Вася
24.07.2017
19:41:03
но на твоем месте на звезды на гитхабе бы смотрел

Котяй Негодяй
24.07.2017
19:42:43
Астарожнааа. Я Вас, сударь, принял за спамера.

Вася
24.07.2017
19:43:02
:(
а стоит ли вообще такие приблуды использовать?

Котяй Негодяй
24.07.2017
19:45:39
Ну, лично мне надоело писать тонны боилерплейт-кода. Редъюсеры итак довольно жирные. И иногда они тупо отличаются названием экшнов (даже наборы экшнов однотипны). А то, что я ещё и Flow юзаю, добавляет рутины.

Вася
24.07.2017
19:47:03
хотя у нас и приложение не особо большое, но очень гранулярный бэкэнд, там кучу запросов надо слать для того что бы собрать нужные данные.
сага в этом деле спасла

Котяй Негодяй
24.07.2017
19:58:51
А чего сага даёт помимо удобной работы с асинхронными экшнами?

Сергей
24.07.2017
19:59:09

Google

Сергей
24.07.2017
19:59:28
async/await — вот это удобная работа с асинхронными экшнами

Вася
24.07.2017
20:01:35

Котяй Негодяй
24.07.2017
20:02:39
Я её ковырял когда-то. Не хватило времени перейти на неё.

Вася
24.07.2017
20:03:20

Котяй Негодяй
24.07.2017
20:03:23
Да и не нужно особо было.

Вася
24.07.2017
20:03:36

Котяй Негодяй
24.07.2017
20:03:47
Сейчас смотрю доку. takeLatest — это вещь. =)

Вася
24.07.2017
20:04:10
в итоге у нас сейчас одна сага на все фетчи, плюс она контролирует статус аутентификации, экспайры токенов и бла бла бла

Disa
24.07.2017
20:04:17
Разве сага не чисто для сайд эффектов?

Вася
24.07.2017
20:04:48

Котяй Негодяй
24.07.2017
20:04:55
Кстати, зачем редъюсерам сайд-эффекты?

Вася
24.07.2017
20:05:05

Котяй Негодяй
24.07.2017
20:05:16

Вася
24.07.2017
20:05:44

Котяй Негодяй
24.07.2017
20:05:56
Выворот мозгов, мать его.

Вася
24.07.2017
20:06:04
намерение фетча чего либо - а там уже сага запукается нужная
редьюсер тут не примем совсем

Котяй Негодяй
24.07.2017
20:06:28
Я ваще хотел rxjs осваивать и всё на redux-observable пилить.

Сергей
24.07.2017
20:06:32
Я считаю, что сага нужна, когда есть сложный флоу

Google

Сергей
24.07.2017
20:06:40
В остальном санк и асинков хватит

Вася
24.07.2017
20:06:57

Котяй Негодяй
24.07.2017
20:07:17
Короче, вопросов стало только больше.

Сергей
24.07.2017
20:07:22

Вася
24.07.2017
20:07:24

Сергей
24.07.2017
20:07:56
Пример приведи

Admin
ERROR: S client not available

Вася
24.07.2017
20:08:16
короче саги довольно хитрые у нас. плюс еще то что мы работаем с девайсами, от них нужно данные получать, мерджить их с бэком - короче мука

Котяй Негодяй
24.07.2017
20:09:19
Так. Дайте понять. А... Сага, т.е. просто связывает вызовы экшнов и всё. При этом экшны о ней не знают, редьюсеры пишутся, как обычно, а саги просто пихаются в миддлвари?

Вася
24.07.2017
20:09:21
Пример приведи
ну я говорил уже что сага отдельная на фетчинг почти всего, плюс эта сага контролирует весь флоу аутентификации если это надо (там он малек не обычный, так как девайс, йопта)
потом отдельный чанел на бридж для обзения с девайсом

Котяй Негодяй
24.07.2017
20:10:30
ну прицнип да, такой
Вот это очень круто. Я пиздец как против того, чтобы экшн криейтор знал, что ему нужно куда-то отправлять http-запрос.

Вася
24.07.2017
20:10:45

Котяй Негодяй
24.07.2017
20:10:50
Вот-вот.
А санк подталкивает к такому.

Вася
24.07.2017
20:11:18
ну я, честно говоря, не использовал его никогда

Nell ?
24.07.2017
20:11:44

Google

Sergey
24.07.2017
20:12:27

Котяй Негодяй
24.07.2017
20:12:39
Ну, хотя от реализации можно абстрагироватья. Мы так и делали с санком. Просто каррировали экшн-криейторы и привязывали к ним реализацию все побочной фигни. Но это всё равно было каким-то компромиссом. А вот связь экшнов через миддлвари — это хорошо.

Вася
24.07.2017
20:12:45

Сергей
24.07.2017
20:13:18
Как вы любите неочевидный код. Кошмар

Котяй Негодяй
24.07.2017
20:13:44
Ладно. Тогда redux-saga vs redux-observable.
И почему? =)

Вася
24.07.2017
20:13:46

Котяй Негодяй
24.07.2017
20:14:01

Sergey
24.07.2017
20:14:07
а чем заменил?
Ванилой. Да гиморнее. Да код получается местами не такой красивый. Но 60 фпс сами себя ненарендерят )

Вася
24.07.2017
20:14:27

Сергей
24.07.2017
20:14:36

Вася
24.07.2017
20:14:53

Sergey
24.07.2017
20:15:28

Вася
24.07.2017
20:15:33

Sergey
24.07.2017
20:18:21

Вася
24.07.2017
20:18:46

Котяй Негодяй
24.07.2017
20:18:48
Миддлвары это не очевидность же
Так ты только подумай. Экшны и редьюсеры в идеале тоже должны быть переносимы (ничоси? ну, это я так решил) и быть абстрагированы от всех особенностей текущего проекта (не только куда отправлять и какие запросы, но ещё и каким образом). Офигенно выглядит код, когда у тебя есть набор событий. Тогда у тебя стейт как ветвистый... нет, не ветвистый, а одного уровня вложенности евент-эмиттер, это более низкий уровень, CRUD. А БЛ над ним ты выстраиваешь, формируя связи между экшнами, создавая поведение приложения над этим CRUD. Это более высокий уровень.

Сергей
24.07.2017
20:20:05

Котяй Негодяй
24.07.2017
20:20:09
Поэтому экшн-криейтор никуда ничего не должен отправлять. Он должен только принимать аргументы и возвращать экшн.

Вася
24.07.2017
20:20:15