我正在尝试在我的React应用程序中使用Redux更新常量。但是触发回调handleChange
会有所延迟。它在调用setFormValues
之前记录值。 react版本为^16.8.0
,react-redux为7.1.1
const [formValues, setFormValues] = useState({ email: ' ', password: ' ' });
const handleChange = (e) => {
const updatedValues = { password: '', email: e.target.value };
setFormValues(updatedValues);
console.log(formValues);
};
答案 0 :(得分:1)
formValues
是一个简单变量,是在第一行调用useState
时设置的。在此渲染迭代期间,它不会更改。
调用handleChange
时,console.log
使用该迭代中的formValues
。仅在下一次渲染组件之后,setState
才会返回新值,并使用更新后的值重新创建handleChange
。
答案 1 :(得分:1)
如果我使用的是React Hooks,则可以使用useEffect
来记录/操作每次更新的新值,如下所示:
import React, { useState, useEffect } from 'react';
...
const [formValues, setFormValues] = useState({ email: ' ', password: ' ' });
const handleChange = (e) => {
const updatedValues = { password: '', email: e.target.value };
setFormValues(updatedValues);
};
useEffect(() => {
console.log(formValues);
});