📅  最后修改于: 2023-12-03 15:34:42.206000             🧑  作者: Mango
在 Redux 中,初始状态是 Redux 的状态树的根。如果没有任何初始状态,则状态树将是 undefined,这可能会导致问题。为了避免这种情况,Redux 提供了一种设置空初始状态的方法。
在 Redux 中,需要定义一个 reducer 函数来处理 action 并返回新的状态。设置空初始状态可以通过创建一个可接受任何类型的 state 并在 reducer 函数中处理 undefined 的情况。
以下是一个示例 reducer 函数,用于处理初始状态为空的情况:
const initialState = {};
function reducer(state = initialState, action) {
switch (action.type) {
// 处理 action 行为
default:
return state;
}
}
在此示例中,初始状态被设置为一个空对象。当状态未定义时(例如在第一次渲染时),则会将初始状态设置为 initialState。在 reducer 函数中,如果 state 仍然是 undefined,则会返回初始状态。
请注意,在使用 combineReducers 函数合并多个 reducer 函数时,必须向每个 reducer 函数提供初始状态。以下是示例代码:
import { combineReducers } from 'redux';
const initialState = {};
function reducer1(state = initialState, action) {
switch (action.type) {
// 处理 action 行为
default:
return state;
}
}
function reducer2(state = initialState, action) {
switch (action.type) {
// 处理 action 行为
default:
return state;
}
}
const rootReducer = combineReducers({
reducer1,
reducer2
});
export default rootReducer;
在此示例中,两个 reducer 函数都使用相同的初始状态 initialState。它们被合并为 rootReducer,该对象会将它们的状态合成一个状态树。
总之,为了在 Redux 中设置空初始状态,请创建一个可接受任何类型的 state,并在 reducer 函数中处理 undefined 的情况。此外,在使用 combineReducers 函数合并多个 reducer 函数时,必须向每个 reducer 函数提供初始状态。