@react_js

Страница 1651 из 5115
Oleg ?
08.07.2017
07:29:29
Это число постоянно меняется

Andrey
08.07.2017
07:29:51
В локальный стейт. Это немного сложнее реализовать, но он надёжнее.

По сути тебе надо будет сделать редакс для локального стейта.

Oleg ?
08.07.2017
07:30:34
А, что если это число понадобится чуть позже отображать в двух местах?

Google
Andrey
08.07.2017
07:31:52
Ну, у меня обычно для запросов есть библиотечка, которой передаёшь колбеки для каждого события. Ты можешь передать методу 2 колбека, которые будут изменять локальный стейт.

Oleg ?
08.07.2017
07:32:48
Может в кейсе, где нужно отобразить число в двух местах, стоит уже хранить в редаксе?

Мне кажется так будет удобнее

Andrey
08.07.2017
07:34:16
Ну, я в редаксе храню реально глобальные вещи. Это инстансы библиотек и локализацию.

Просто если есть возможность хранить данные локально, то лучше их хранить локально, имхо.

Гемороя меньше будет.

Oleg ?
08.07.2017
07:35:58
Как я понял из вчерашней беседы, если кейсы сложные, типо в двух и более местах, то лучше делать через редакс

Andrey
08.07.2017
07:37:12
Как я понял из вчерашней беседы, если кейсы сложные, типо в двух и более местах, то лучше делать через редакс
Ну, здесь много разных мнений. Просто глобальное состояние плохо тем, что оно глобальное. Гораздо проще работать с небольшим кусочком, чем поддерживать огромную дуру.

kana
08.07.2017
07:38:02
Да дело даже не в сложности кейсов. Ты же сам должен понимать, какие данные application-wide, а какие component-wide

shadowjack
08.07.2017
07:38:24
combineReducers для того и нужен чтоб глобальную дуру разобрать на кусочки

kana
08.07.2017
07:39:38
Вот скажем виджет, который показывает курс валют A -> B в банковском приложении. По кнопке он меняет на B -> A. Из стора он вытягивает сам курс, а вот направление - данные не приложения, его нужно хранить локально

Andrey
08.07.2017
07:39:58
combineReducers для того и нужен чтоб глобальную дуру разобрать на кусочки
Да, но это только маскировка проблемы. Тебе всё равно надо следить за этим состоянием. Может редьюсеры и стали меньше, но в общем это не поменяло ситуацию.

Google
Andrey
08.07.2017
07:40:45
Как ты писал полные пути в состоянии: a.b.c.d.e, так и пишешь, как использовал глобальные имена type, так и используешь.

Dmitry ?
08.07.2017
07:43:03
Как ты писал полные пути в состоянии: a.b.c.d.e, так и пишешь, как использовал глобальные имена type, так и используешь.
Не понятно. > полные пути mapStateToProps? > глобальные type А если нужно среагировать на экшен в нескольких местах?

anoru
08.07.2017
07:43:29
Как я понял из вчерашней беседы, если кейсы сложные, типо в двух и более местах, то лучше делать через редакс
если данные запрашиваются с сервера, а юзаются в одном месте, то все равно redux.

Andrey
08.07.2017
07:44:10
shadowjack
08.07.2017
07:44:21
Я думаю что redux нужно использовать везде, где это не приводит к проблемам с производительностью

Andrey
08.07.2017
07:45:45
Ну, если его использовать везде, то там начинается ад с диспатчами.

shadowjack
08.07.2017
07:46:08
Какой ад?

Andrey
08.07.2017
07:46:35
Ну, "везде" - это локальное состояние тоже хранить в редаксе?

Oleg ?
08.07.2017
07:47:00
если данные запрашиваются с сервера, а юзаются в одном месте, то все равно redux.
Ну если данные используются в одном месте и отображаются только один раз, то можно без редакса

shadowjack
08.07.2017
07:47:31
Ну, "везде" - это локальное состояние тоже хранить в редаксе?
Почему бы и нет? Сейчас оно локальное, а через 3 месяца понадобится в другом месте.

anoru
08.07.2017
07:47:43
Ну если данные используются в одном месте и отображаются только один раз, то можно без редакса
То есть ты хочешь сделать запрос на didMount, там же обрабатывать ошибку? Нее, если с сервера, то держи в редаксе, там еще и мидлвары полезные, без которых не обойтись

Oleg ?
08.07.2017
07:47:43
Я просто видел проект где для всех данных пришедших с сервера используется редакс

Могу скинуть

github: opendota ui

anoru
08.07.2017
07:48:07
а почему бы не делать так?

Andrey
08.07.2017
07:48:56
Просто у меня в голове так: в редаксе нужно хранить данные, которые 1) затрагивают больше, чем 1 компонент 2) если изменение и чтение данных происходит в разных компонентах.

Oleg ?
08.07.2017
07:49:07
Ну иногда это слишком, для случаев когда данные используются в одном месте и отрисовываются они один раз

Andrey
08.07.2017
07:49:08
В остальных случаях я использую локальный стейт.

А работу с сервером лучше вынести в отдельную библиотеку и там с этим мучаться.

Google
Oleg ?
08.07.2017
07:50:02
А работу с сервером лучше вынести в отдельную библиотеку и там с этим мучаться.
У меня так и сделано, но второй программист хочет писать вообще без редакса

И я хз, как его убедить или лучше согласиться с ним...

Andrey
08.07.2017
07:50:25
У меня так и сделано, но второй программист хочет писать вообще без редакса
Ну, я с помощью редакса подключаю библиотеки. Это очень удобно.

У меня есть LibsReducer, в котором я просто создаю инстансы библиотек.

Такой DI для бедных.

Oleg ?
08.07.2017
07:51:14
Типо паттерн Фабрика?

Andrey
08.07.2017
07:51:30
Типо паттерн Фабрика?
Возможно, я не особо ориентируюсь в них.

anoru
08.07.2017
07:52:29
Внешняя библиотека.
Да какая разница. То есть в компоненте A ты фетчишь вызывая экшен redux'а, а в компоненте B фетчишь прямо в didMount

А потом внезапно нужны данные компонента B в другом месте и ты переписываешь его как компонент A.

anoru
08.07.2017
07:52:52
Тебе не кажется, что проще сразу сделать в едином стиле?

Andrey
08.07.2017
07:53:16
Зачем?
Чтобы везде использовать одну копию библиотеки.

anoru
08.07.2017
07:53:19
отредактировал*

Andrey
08.07.2017
07:53:46
Ну, если понадобится внезапно, то можно после решить что делать.

Dmitry ?
08.07.2017
07:54:00
Чтобы везде использовать одну копию библиотеки.
Модули в джаваскрипте так работают. Зачем класть в редакс "не данные"

Andrey
08.07.2017
07:54:13
А решать сразу общую задачу - ну, это бесмысленно.

anoru
08.07.2017
07:54:27
А так будет каша из двух разных подходов в проекте

Google
anoru
08.07.2017
07:54:34
Я за "единый стиль"

Oleg ?
08.07.2017
07:54:45
А потом внезапно нужны данные компонента B в другом месте и ты переписываешь его как компонент A.
Я стараюсь не делать преждевременной оптимизации. Когда нужно, тогда и делаю

shadowjack
08.07.2017
07:54:57
А решать сразу общую задачу - ну, это бесмысленно.
Все библиотеки сделаны чтобы решать общую задачу, лол.

Dmitry ?
08.07.2017
07:54:59
Дай ссылку, пожалуйста.
Какую ссылку?) Инициализируешь либу и делаешь ей export

anoru
08.07.2017
07:55:09
Тем более с крутыми мидлварами даже быстрее и проще выйдет

Andrey
08.07.2017
07:55:10
Oleg ?
08.07.2017
07:55:12
Но вряд-ли я смогу убедить второго разработчика

shadowjack
08.07.2017
07:55:45
Но вряд-ли я смогу убедить второго разработчика
Скажи ему что он дурак и не лечится.

Andrey
08.07.2017
07:55:54
Какую ссылку?) Инициализируешь либу и делаешь ей export
Ну можно и так. Но мне не особо нравится это решение. Отторжение на уровне религии вызывает.

Admin
ERROR: S client not available

Dmitry ?
08.07.2017
07:56:06
reducer - чистая функция, в которой не должно быть сайдэффектов. Делая там вещи типа "инициализация библиотек" ты это нарушаешь

anoru
08.07.2017
07:57:44
С редаксом я могу получить в редюсере данные, которые запрашиваю с сервера (или отсылаю) заранее для оптимистичных данных, а потом автоматически вызовется FAILURE в случае ошибке, где достану предыдущие данные, которые также автоматически сохраняются. Это позволяет писать оптимистичные изменения парой строк кода

Oleg ?
08.07.2017
07:58:23
anoru
08.07.2017
07:58:38
Какую логику?

Oleg ?
08.07.2017
07:59:28
А вчера меня закидали помидорами, когда я призывал использовать для пришедших данных с сервера редакс

Google
kana
08.07.2017
07:59:29
Хранить все в редаксе - тоже не абрамоугодно

anoru
08.07.2017
07:59:33
ты что-то путаешь. В редюсере только сохранение оптимистичных данных на REQUEST, заменя на SUCCESS данными с сервера (там же id прилетает настоящий) и откат на FAILURE, никакой логики нету

это еще позволяет в мидлваре отслеживать ошибки и выводить нотификацию

kana
08.07.2017
08:00:08
Ибо Абрамов говорил, что любой нормальный чел понимает, что есть данные приложения, а что есть данные компонента

И хранить все в редаксе - дибелизм

Это и перегрузка стора кучей хлама типа значения некого инпута в хрен пойми какой модалке, и куча диспатчей ненужных

Хочется редакс для компонента - есть же локальный редакс

kana
08.07.2017
08:02:23
Нет, recompose/withRedux

Andrey
08.07.2017
08:02:33
Ну вот, обеденное обсуждение. Аж приятно стало)

kana
08.07.2017
08:02:47
редакс - такая простая вещь, что реализовать его локально даже без рекомпоса - десяток строк

anoru
08.07.2017
08:03:30
Вполне возможно.
Вот смотри. Даже если не затрагивать оптимистичное изменение, а просто фетч данных, которые нужны тебе в одном месте. Тебе пришлось бы делать запрос в didMount, потом обрабатывать ошибку, далее выводить нотификацию экшеном, который еще надо прокинуть в твой компонент. А можно просто в мидлваре отслеживать ошибку с сервера. Если сервер выдал еще и тип ошибки, то можно сразу взять текст из локали по этому типу и вывести нотификацию в виде попапа в углу экрана, который улетает. Такой подход позволяет делать вывод ошибок в любом месте с минимум затрат сил

Oleg ?
08.07.2017
08:06:22
Нет, recompose/withRedux
Пример вот этого)

Andrey
08.07.2017
08:06:22
Хоть алерт, хоть console.log, хоть сигнал редаксу.

kana
08.07.2017
08:06:53
recompose/withReducer.js at master · acdlite/recompose https://github.com/acdlite/recompose/blob/master/src/packages/recompose/withReducer.js

А, пример прямо в ридми

https://github.com/acdlite/recompose/blob/master/README.md#lift-state-into-functional-wrappers

Oleg ?
08.07.2017
08:08:16
Ага, спасибо

Pavel
08.07.2017
08:17:41


Страница 1651 из 5115