fullstack-development / react-redux-starter-kit

Modular starter kit for React+Redux+React Router projects.
https://demo.fullstack-development.com/
MIT License
91 stars 13 forks source link

Выпилить shared/helpers/redux/isSuccessedByState #143

Open sk1e opened 4 years ago

sk1e commented 4 years ago

Реагировать на такие события можно в саге. В саге это декларативней и не приведёт к дополнительному рендеру, если реакция - диспатч (что как правило). Также не будет дополнительного импорта.

in19farkt commented 4 years ago

Очень часто тебе нужно реагировать на изменение комуникейшна в реакт компонентах, т.е. только тогда, когда компонента прямо сейчас отрисована на странице, в сагах ты такое не отследишь, ну или отследишь, но нужно тогда в редакс стейт добавлять какие-то дополнительные флаги, типа "такая-то страница отрисована, такой-то попап открыт/закрыт".

Простой пример, попап, в котором ты что-то сабмитишь. Если на проекте не настроена система нотификаций, то тебе нужно в реакт компоненте слушать прогресс выполнения запроса и на испех или ошибку отреагировать в отрисованном попапе

sk1e commented 4 years ago

Очень часто тебе нужно реагировать на изменение комуникейшна в реакт компонентах, т.е. только тогда, когда компонента прямо сейчас отрисована на странице, в сагах ты такое не отследишь, ну или отследишь, но нужно тогда в редакс стейт добавлять какие-то дополнительные флаги, типа "такая-то страница отрисована, такой-то попап открыт/закрыт".

Это к стейту приложение относится, с чего бы этим флагам не быть в редакс стейте?

in19farkt commented 4 years ago

по мне так лишний бойлерплейт, такие вещи можно и в локальном стейте делать. Конечно если ты хочешь иметь возможность открыть попап фичи находясь в другой фиче, тогда да, можно и в редакс сунуть.

sk1e commented 4 years ago

Я пришёл к тому что весь стейт лучше держать в редаксе. Помимо управления извне мы можем:

У нас ответственность разделена между разными слоями и есть слой, который отвечает за стейт. Зачем делать исключения и вносить неоднородность?