我想在redux状态下更新每个对象的特定属性,并假定我具有这种主要状态
networkFailure: true
employer: {
signUp: {
data: null
error: null
loading: true
}
}
user: {
signUp: {
data: null
error: null
loading: false
}
}
假设我遇到了网络故障,然后networkFailure状态变为true,因此我需要失败(false)加载employer的signUp状态并将所有加载状态也更改为其他对象的false值
可以在一个减速器中做到这一点吗?或有任何更好的建议吗?我为雇主,用户和网络设置了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
}
}
实际上是在发生网络故障时,可以重置应用程序状态,
所以我已经在根减速器中重置了应用程序状态
const rootReducer = (state, action) => {
if (action.type === 'NETWORK_ERROR') {
state = undefined
}
return appReducer(state, action)
}
这将使其他减速器的状态保持其默认状态