Задать вопрос
@DenJel

Side Effects после исполнения reducer'a?

Здравствуйте, изучаю Redux. Как я понял любые асинхронные действия и сайд эффекты должны происходить в мидлваре. Но Если допустим ты изменил state в рудьюсере и хочешь тут же его сохранить в БД ( ну или какую то его часть, не суть). Как быть тогда? Как то я не понимаю логики. Почему редьюссер замыкает цепочку изменения стейта? Объясните, пожалуйста. Можно на примере localStorage. Спасибо.
  • Вопрос задан
  • 847 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
Редьюсер не замыкает цепочку изменения стейта. От получает экшн и возвращает новый стейт. По сути только редьюсер можно "изменять" стейт.
Сохранение данных в localStorage - это тоже сайд эффект, и оно должно происходить в мидлваре.

Например, с redux-thunk:
const asyncAction = () => {
  return (dispatch, getState) => {
    localStorage.setItem('state', JSON.stringify(getState()))
    return dispatch(someAction())
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
Как я понял любые асинхронные действия и сайд эффекты должны происходить в мидлваре.

Не совсем согласен. В action creators тоже можно практически безнаказанно провернуть какой-нибудь side-effect (сохранить токен в localStorage, например, после LOGIN_SUCCESS).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽