gpt4 book ai didi

javascript - Redux 不初始化状态

转载 作者:行者123 更新时间:2023-11-28 17:08:12 25 4
gpt4 key购买 nike

我已经构建了下一个 reducer 结构:

//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;

显然,我有更多的reducer,是为了简化演示。

我的逻辑是,如果userReducer的第一个参数是假值,它将使用initState。在 rootReducer 中,user 的值为 null,因此在 userReducer 内部,应该使用 initState 作为状态。

不幸的是我的状态是这样的:

{ user: null }

我做错了什么?

最佳答案

仅当未定义或未传递任何值时才应用默认参数值。传递 null 和除 undefined 之外的其他虚假值将覆盖默认值。更多信息here .

正如 chrisheyn 在他的回答中指出的那样,if (action === "SIGN_OUT") 应该是 if (action.type === "SIGN_OUT")

关于javascript - Redux 不初始化状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55201154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com