Обновлять массив по состоянию после любого действия моего реактива-редуктора - PullRequest
0 голосов
/ 08 февраля 2020

В данный момент я изучаю response-redux, уже освоил основы (я полагаю), сейчас я пытаюсь создать массив уведомлений о моем состоянии, который может быть заполнен несколькими действиями.

Но так как это уведомление, я хочу добавить уведомление только после того, как каждое из этих действий завершено (состояние изменено).

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

Быстрый пример:

Вход пользователя в систему -> действие отправки -> влияет на свойство состояния, связанное с входом в систему -> добавляет уведомление в массив уведомлений

Пользователь добавляет элемент -> диспетчерское действие -> влияет на свойство состояния, связанное с элементами -> добавляет уведомление в массив уведомлений

Это 2 разных действия, которые я мог бы указать в логе c каждого действия (для редуктора) ) обновить массив уведомлений, но похоже на повторяющийся код, и я буду создавать объект уведомления на редукторе, является ли это хорошо?

Так в каком случае я должен отправлять действие добавления уведомления в массив уведомлений?

Я ищу лучшие практики

1 Ответ

1 голос
/ 08 февраля 2020

Лучше всего обрабатывать такие сценарии в reducer. Обработайте данные один раз и обновите состояние соответственно. В вашем сценарии вы хотите обновить массив notifications после завершения action. Вы должны делать это неоднократно, потому что это должно быть сделано. Вот что вы можете сделать:

case LOGIN:
  //checks if user is valid
  return {
     ...state
     loggedIn: true,
     user,
     notifications: state.notification.push({ id: 1, message: "Logged In!" })
  }

И если вы хотите удалить notification, вы можете сделать это:

case REMOVE_NOTIFICATION:
  // You can get the notification ID you want to remove from action
  let notifications = state.notification.filter(notify => notify.id !== action.id);
  return {
     ...state
     notifications
  }

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...