reactjs - 反应减速器,状态不立即更新
问题描述
我正在使用减速器createContext
,reducers
我正在更新状态值,但它不是一次更新值,我这样做console.log(user);
了onSubmitSave()
,但是在控制台日志中我一次没有得到它的更新状态,我可以看到它在我工作时工作再次点击登录,在这里我附上了我的整个代码,任何人都可以查看它,并帮助我解决这个问题吗?
auth.js
import { createContext } from 'react';
const AuthContext = createContext({
user: null,
hasLoginError: false,
login: () => null,
logout: () => null
});
export default AuthContext;
登录.js
// Login button Click
async function onSubmitSave(e) {
e.preventDefault();
const messages = {
'itemUsername.required': 'Username cannot be empty.',
'itemPassword.required': 'Password cannot be empty.',
};
const rules = {
itemUsername: 'required',
itemPassword: 'required|string',
};
validateAll(state, rules, messages)
.then(async () => {
let data = await login(itemUsername, itemPassword);
console.log(data);
console.log("sdsds");
console.log(user);
setUserData(user);
})
.catch(errors => {
const formattedErrors = {
};
errors.forEach(error => formattedErrors[error.field] = error.message);
setState({
...state,
errors: formattedErrors
});
})
}
// End Login
应用程序.js
const reducer = (state, action) => {
switch (action.type) {
case "login": {
const { username, password } = action.payload;
return {
...state,
hasLoginError: false,
user: {
id: 1,
username: USERNAME,
firstName: "Dev",
lastName: "To"
}
};
}
case "logout":
return {
...state,
user: null
};
default:
throw new Error(`Invalid action type: ${action.type}`);
}
};
解决方案
推荐阅读
- html - Outlook 2010 电子邮件背景颜色 html/css 属性不起作用
- javascript - 无法解析 Ajax 调用错误部分中的 json 对象值
- google-cloud-platform - 协调 master 和 worker 机器
- c - 更改“受限”指针的顺序会产生不同的程序集
- vim - Vim 配色方案在退出后更改终端
- java - 找不到 NullPointerException 错误
- r - 带有 r 闪亮 textInput 的 jQuery 掩码插件
- apache-zookeeper - Spring Cloud Config Zookeeper 异常
- laravel - 在laravel中选择没有相关记录的记录
- react-native - React-Native 编辑数组中的文本