reactjs - 初始状态未在 Dispatch 上更新
问题描述
AuthReducer-reducer 文件
const initialState = {
isAuthenticated: false,
}
const authReducer = (state = initialState, action: any) => {
switch (action.type) {
case 'SIGN_IN':
state = {
...state,
isAuthenticated: true,
}
break;
case 'SIGN_OUT':
state = {
...state,
isAuthenticated: false,
}
break;
default:
state = {
isAuthenticated: false,
}
}
return state;
}
export default authReducer;
调度员调度动作
const authDispatch = useDispatch();
authDispatch({ type: 'SIGN_IN'});
店铺
const rootReducer = combineReducers({
user: AuthReducer
}); const store = createStore(rootReducer, compose(applyMiddleware(thunk)));
结果
{isAuthenticated: false}
我想要的结果
{isAuthenticated: true}
我该如何解决这个错误我无法解决这个错误,请帮助我...
解决方案
您的default
案例正在设置isAuthenticated: false
- 并且该default
案例将被每个 Redux 调度过的操作所击中,而不是"SIGN_IN"
or "SIGN_OUT"
。因此,一旦调度了另一个动作,它就会返回到isAuthenticated: false
.
你应该有
default:
return state
另外,请注意,您通常正在编写一种非常古老的 Redux 风格,我们不再推荐它,因为它需要大量的样板(现代 Redux 也不会发生这种情况)。您可能正在关注一个非常过时的教程。有关最新教程,请参阅官方 Redux 教程
推荐阅读
- flutter - 用FlutterDrive做flutter集成测试怎么做长按
- jquery - 如果 url 等于,则转到锚链接
- http - 浏览器和非浏览器客户端的会话身份验证
- web-services - 如何在 SpringBoot 应用程序中连接到 WSDL?
- django - Django + Channels + Daphne + Caddy + 管理文件上传 = 413 错误
- javascript - Primordial Particle System - JavaScript 中的 2D 粒子交互
- cocoa - NSBox 背景颜色
- c# - 从项目内的文件夹中读取 .txt 文件
- c - 如何在没有指数运算符的情况下使用 C 编程翻译多项式?
- android - sw-XXXdp 限定符的比例因子