在处于还原状态的每个对象中更新特定属性

问题描述 投票:1回答:2

我想在redux状态下更新每个对象的特定属性,并假定我具有这种主要状态

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

假设我遇到了网络故障,然后networkFailure状态变为true,因此我需要失败(false)加载employersignUp状态并将所有加载状态也更改为其他对象的false

可以在一个减速器中做到这一点吗?或有任何更好的建议吗?我为雇主,用户和网络设置了3个减速器功能

reactjs redux reducers
2个回答
0
投票
我认为有两种方法:1.使用redux-thunk并分派一个动作,然后在该动作函数内分派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 } }

  • 0
    投票
    here找到一个答案

    实际上是在发生网络故障时,可以重置应用程序状态,

    所以我已经在根减速器中重置了应用程序状态

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

    这将使其他减速器的状态保持其默认状态
    © www.soinside.com 2019 - 2024. All rights reserved.