
Roman
28.07.2018
19:44:44
А если ты захочешь изменить название запроса, то придется везде его менять

Spaider
28.07.2018
19:44:45
юзай thunk или сагу

Roman
28.07.2018
19:45:08
А это уже копипаст

Дмитрий
28.07.2018
19:55:06

Google

Artyom
28.07.2018
19:58:57

Eugene
28.07.2018
19:59:11

Artyom
28.07.2018
19:59:23

Sergey
28.07.2018
19:59:49

Spaider
28.07.2018
20:00:25

Eugene
28.07.2018
20:01:00

Artyom
28.07.2018
20:02:38
С "хранением" и window справится

Temich
28.07.2018
20:04:51
Смысл стора хранить динамические данные

Eugene
28.07.2018
20:05:59

Artyom
28.07.2018
20:07:01
уверен?
Можно еще window.location.href

Дмитрий
28.07.2018
20:07:13

Eugene
28.07.2018
20:07:27

Google

Temich
28.07.2018
20:07:31
Если так подумать, то без состояний, react - не react

Kendr
28.07.2018
20:08:39

Дмитрий
28.07.2018
20:08:55

Temich
28.07.2018
20:10:57
Но без state не будет setState *тут должен быть мем с негром*

Kendr
28.07.2018
20:11:56

Дмитрий
28.07.2018
20:12:26
Поэтому это то, что определяет реакт, через его недостатки)

Kendr
28.07.2018
20:13:14
Ну и да, не стоит забывать, что стейт в реакте — объект. Махровая ооп библиотека.
(не баньте только плиз)

Temich
28.07.2018
20:14:13
Кароч, есть у компонента state. Если мы его будем рендерить (state) и он поменяется, то компонент заново отредериться и покажет актуальный state

Дмитрий
28.07.2018
20:14:45

Kendr
28.07.2018
20:15:14

Дмитрий
28.07.2018
20:15:43
Проблема в том, что setState императивный, а поэтому непредсказуемый для библиотеки, это мешает делать клёвые оптимизации и всячески трепит нервы авторам

Temich
28.07.2018
20:16:29
А вообще redux есть

Дмитрий
28.07.2018
20:17:12
Ну да, есть, но это мало что меняет

Temich
28.07.2018
20:20:00
А вообще redux есть
State не нужон (хотя всё равно нужно создавать контейнер, который имеет состояние взятое из redux, который передаёт обёрнотому им же компоненту свой state, как делает либа react-redux. Как что state всё-таки нужон)

Rustam
28.07.2018
20:23:39
кейсы бывают разные, в моем случае ридакс не особо нужен и хватает контекста и аполо

Max
28.07.2018
20:37:43
Проблема в том, что setState императивный, а поэтому непредсказуемый для библиотеки, это мешает делать клёвые оптимизации и всячески трепит нервы авторам
Кстати setState это необязательный аттрибут для view библиотеки как реакт. Если бы реакт был бы достаточно быстр можно было бы не добавлять setState а оставить только один способ обновить компоненты - через метод updateViews() который аналогичен обновлению рутового компонента ReactDOM.render(<App/>, el), который будет сравнивать виртуальный дом всех компонентов начиная с рута и оставить работу с состоянием на откуп пользовательским библитекам в которых можно реализовать какие угодно концепции на любой вкус и цвет. И получается что реакт вроде как и unopinionated в отличие от angular и vue но все же не до конца со своим setState

Дмитрий
28.07.2018
20:41:46
Я вообще стараюсь делать так, чтобы такая императивщина не требовалась

Google

Дмитрий
28.07.2018
20:42:22
В эффекторе например нет setState

Max
28.07.2018
20:43:24

Дмитрий
28.07.2018
20:44:20
Сами, ты просто задаешь правила обновления и всё
Если стор реагирует на какой-либо эвент или зависит от подобных данных, то он будет пересчитан
Разница в том, что это можно варьировать, когда и в каком порядке это делать, с setState выбора ты лишаешься, так как факт вызова сетстейта означает безусловное изменение

Max
28.07.2018
20:47:51
updateViews это абсолютно то же самое что и setState
Тут вопрос в скорости. Для крупных приложений оверхед на virtual dom достаточно большой чтобы обновление (реконсайлер) виртуального дома всего приложения на каждое изменение данных начало тормозить. Поэтому большинство библиотек для работы с состоянием (redux, mobx) используют точечный подход - обновление только тех компонентов которые зависят от данных которые изменились

Дмитрий
28.07.2018
20:48:55
Это не вопрос в скорости, это просто аналогичный принцип действия
Если нет императивного setState, то можно планировать действия наперед так как ты знаешь какие у тебя есть варианты развития событий

Andrey
28.07.2018
20:52:19

Kirill
28.07.2018
20:56:07

Дмитрий
28.07.2018
20:56:25

Andrey
28.07.2018
21:02:46
что то не сходится пример, но ок

Дмитрий
28.07.2018
21:03:00
Сорян, это пока девелоп бранч
npm install effector@next

Kirill
28.07.2018
21:04:18
Эра Flux подходит к концу, короче.

Дмитрий
28.07.2018
21:04:24
https://github.com/zerobias/effector/blob/develop/src/react/createComponent.js
strict one way dataflow

Google

Andrey
28.07.2018
21:13:59

Дмитрий
28.07.2018
21:25:20

Andrey
28.07.2018
21:28:26
не очень красиво, особенно если у тебя их 50
но поиграюсь

Дмитрий
28.07.2018
21:28:54
Это простейший хелпер
https://codesandbox.io/s/724n740r8x

Admin
ERROR: S client not available

Andrey
28.07.2018
21:29:21
+ serverSideState не динамический в примере

Дмитрий
28.07.2018
21:29:35
Там как бы экшны на сервере вызываются предварительно
cats.js
Принцип — ты создаешь эффекты, чтобы потом вкладывать в них реализацию в зависимости от задач
Например для тестов можно положить другую функцию в use

Andrey
28.07.2018
21:34:10
Ты точно внимательно изучил пример?
src/server/render.js там инициализируются все подписчики import '../app/store/on'
кидается injectData(serverSideState) как инитал стейт для сторов и дальше в html(preRendered, serverSideState) кидаешь тот же serverSideState который удет клиенту
либо serverSideState мутируется, либо serverSideState статичный)

Дмитрий
28.07.2018
21:34:51
А в редаксе что со стейтом сервера произойдет?

Google

Дмитрий
28.07.2018
21:35:01
Застрянет и не обновится?

Cenator
28.07.2018
21:35:05
Удалится гарбаж коллектором

Дмитрий
28.07.2018
21:35:06
Окей, я сделаю получше пример

Andrey
28.07.2018
21:35:42

Дмитрий
28.07.2018
21:35:47
Аналогично

Andrey
28.07.2018
21:36:31
Аналогично
ну, в коде https://github.com/zerobias/effector/blob/develop/examples/react-ssr/src/server/render.js не так )

Дмитрий
28.07.2018
21:36:51
injectData

Andrey
28.07.2018
21:36:54
не собирается состояние сторов а отдается просто serverSideState

Дмитрий
28.07.2018
21:37:15
Ладно, не нравится значит не нравится
Переубеждать не буду

Andrey
28.07.2018
21:37:37
injectData
это создание createEvent('load data to stores') который пойдет по сторам и проинцииализует их

Дмитрий
28.07.2018
21:37:42
injectData — это эвент реализованный рядом в пару строк

Andrey
28.07.2018
21:37:49

Дмитрий
28.07.2018
21:37:55
Бросайте свою выученную беспомощность пацаны
Там ничего сложного нигде нет и не должно быть
Чтобы относиться к этому как к чёрному ящику с магией "а она достаточно сильна для эс эс эр?"

Andrey
28.07.2018
21:39:03
там все просто и либо serverSideState мутируется, либо он предается в статичном виде из файла server/render.js

Дмитрий
28.07.2018
21:39:11
Я вызвал эвент
Можешь вызвать свой

Andrey
28.07.2018
21:39:19
либо это простой пример без асинхронных фетр действий на стороне сервера

Дмитрий
28.07.2018
21:39:42
Хорошо, покажи мне пример действий, без реакта, как бы ты это реализовывал