在 redux 状态下更新每个对象中的特定 属性
Update a specific property in each object in redux state
我想在 redux 状态的每个对象中更新特定的 属性,并假设我有这种主状态
networkFailure: true
employer: {
signUp: {
data: null
error: null
loading: true
}
}
user: {
signUp: {
data: null
error: null
loading: false
}
}
假设我遇到了网络故障,那么 networkFailure 状态变为 true ,因此我需要 fail(false ) 加载 signUp employer 状态和所有加载状态到 false 其他对象的值
是否可以在一个减速器中做到这一点?或者有什么更好的建议吗?
我为雇主、用户和网络设置了 3 个 reducer 函数
我认为有两种方式:
1. 使用 redux-thunk 并分派一个动作,然后在动作函数中分派 3 个动作,其中 return 将函数分派到 you.something,如下所示:
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)
}
}
- 写一个hook函数,它可以访问dispatch函数,dispatch函数暴露函数来dispatch actions,当你调用hook function时,它会向reducer派发actions,但这是一种集中业务的方式。像这样:
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)
}
这会将其他 reducer 的状态保持为默认状态
我想在 redux 状态的每个对象中更新特定的 属性,并假设我有这种主状态
networkFailure: true
employer: {
signUp: {
data: null
error: null
loading: true
}
}
user: {
signUp: {
data: null
error: null
loading: false
}
}
假设我遇到了网络故障,那么 networkFailure 状态变为 true ,因此我需要 fail(false ) 加载 signUp employer 状态和所有加载状态到 false 其他对象的值
是否可以在一个减速器中做到这一点?或者有什么更好的建议吗? 我为雇主、用户和网络设置了 3 个 reducer 函数
我认为有两种方式: 1. 使用 redux-thunk 并分派一个动作,然后在动作函数中分派 3 个动作,其中 return 将函数分派到 you.something,如下所示:
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)
}
}
- 写一个hook函数,它可以访问dispatch函数,dispatch函数暴露函数来dispatch actions,当你调用hook function时,它会向reducer派发actions,但这是一种集中业务的方式。像这样:
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)
}
这会将其他 reducer 的状态保持为默认状态