我尝试使用获取的数据更新 useState 中的值。 当我控制台.log data.success时,它返回正确。然后我将其分配给成功值。但它返回false!为什么?为什么值(value)成功没有立即更新。最后我从服务器收到登录成功的消息。 登录成功: false 用户管理员已登录
const Signin = () => {
const [values, setValues] = useState({
success: false
});
const { success } = values;
const clickSubmit = async event => {
event.preventDefault();
const signReact = catchAsync(async (email, password) => {
const data = await signin(email, password) // fetch data from the server
console.log(data.success); // -> true
if (data) {
setValues({
...values, success: data.success // -> assign to success
});
console.log("SIGN IN success: " + success); // -> false! why?!
}
return data;
});
signReact(email, password);
};
最佳答案
使用useEffect 。尝试这样的事情:
useEffect(() => {
console.log("SIGN IN success: " + values.success);
}, [values]);
...
...
const data = await signin(email, password);
setValues(prevState =>{...prevState, success: data.success});
关于javascript - 为什么 React Hooks 不更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60686533/