Обновите указанное свойство c в каждом объекте в состоянии избыточности - PullRequest
1 голос
/ 04 февраля 2020

Я хочу обновить указанное c свойство в каждом объекте в состоянии избыточности и предположить, что у меня есть такое основное состояние

networkFailure: true
employer: {
  signUp: {
    data: null
    error: null
    loading: true
  }
}
user: {
  signUp: {
    data: null
    error: null
    loading: false
  }
}

Предположим, я столкнулся с сетевым сбоем, а затем networkFailure состояние становится true , и с этим мне нужно завершить (false) загрузку signUp состояние работодателя и все состояние загрузки в false значение других объектов тоже

Возможно ли это сделать в одном редукторе? или какие-либо предложения для сделать это лучше? Я настроил 3 функции редуктора для работодателя, пользователя и сети

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Один ответ найден из здесь

На самом деле, когда произошел сбой сети, для меня вполне нормально сбросить состояние приложения,

Итак, я сбросил состояние приложения в root редукторе

const rootReducer = (state, action) => {
  if (action.type === 'NETWORK_ERROR') {
    state = undefined
  }
  return appReducer(state, action)
}

, при этом состояние другого редуктора будет оставаться в состоянии по умолчанию

0 голосов
/ 04 февраля 2020

Я думаю, что есть два способа: 1. Использовать избыточный поток и отправить действие, а затем отправить 3 действия внутри функции действия, которые возвращают вам функцию отправки. Примерно так:

function setErrorAction() {
  return dispatch => {
      const networkError = {type: "network/singup/error"}
      const employer Error = {type: "employer/singup/error"}
      const userError = {type: "user/singup/error"}

      dispatch(networkError)
      dispatch(employer)
      dispatch(userError)
  }
}
Напишите функцию-ловушку, которая имеет доступ к функции диспетчеризации, которая открывала функцию для действий по диспетчеризации, и когда вы вызываете функцию-ловушку, она отправляет действия редукторам, но это способ централизации бизнеса. как то так:
import {useDispatch} from "react-redux";

function useAuthError() {
   const dispatch = useDispatch();

   function setError() {
      const networkError = {type: "network/singup/error"}
      const employer Error = {type: "employer/singup/error"}
      const userError = {type: "user/singup/error"}

      dispatch(networkError)
      dispatch(employer)
      dispatch(userError)
   };

   return {
      setError
   }
}
...