Я построил следующую структуру редуктора:
//index.js
import userReducer from "./user";
const initState = {
user: null
};
const rootReducer = (state = initState, action) => {
const {
user
} = state;
if (action === "SIGN_OUT") {
return {
user: userReducer(null, action)
};
}
return {
user: userReducer(user, action)
};
};
export default rootReducer;
//user.js
const initState = {
userId: null,
clientId: null,
type: null
}
const userReducer = (state = initState, action) => {
switch (action.type) {
case "SET_USER_ID" :
const { userId } = action;
return {
...state,
userId
};
case "SET_USER_DATA" :
const { userData } = action;
return {
...state,
...userData
};
default : return state;
};
};
export default userReducer;
Очевидно, у меня больше редукторов, это для упрощения демонстрации.
Моя логика заключается в том, что если первый параметр userReducer
является ложным значением, он будет использовать initState
. В rootReducer
значение user
равно нулю, поэтому внутри userReducer
следует использовать initState
в качестве состояния.
К сожалению, мое состояние выглядит так:
{ user: null }
Что я делаю не так?