【发布时间】:2021-12-17 04:18:21
【问题描述】:
很抱歉这个新手问题,但我搜索并尝试了我在网上找到的所有内容。
这是我的代码:
const [userNewInfos, setUserNewInfos] = useState({
user_firstname: "1",
user_lastname: "2",
user_password: "3",
});
useEffect(() => {
const saveChange = (e) => {
e.preventDefault()
setUserNewInfos((prev) => {
return {
...prev,
user_firstname: "4",
user_password: "5",
user_lastname: "6",
};
});
console.log(userNewInfos);
};
}, [userNewInfos])
return (
<div className="modal">
<form className="modal__infos" onSubmit={saveChange}>
.......
</form>
</div>
)
我的状态在更改后不会立即更新,显然这是正常行为,因为 useState 正在异步运行,所以我正在使用 ... prevState 来解决问题,但它没有改变任何东西,我的 console.log 总是返回 1、2 和 3 而不是 4、5 和 6。
所以,我使用了 useEffect 钩子,但问题是这样做后,我无法再访问我的 saveChange() 函数,该函数在提交时在我的表单中调用(范围问题)。
我什至不知道 useEffect 是否能解决问题。
如果 prevState 不能解决问题并且 useEffect 使我的函数无法访问,我应该对我的 console.log 执行什么操作以返回 4、5、6?
谢谢
【问题讨论】:
-
嗨,这不是我的问题,我不明白我应该在我的代码中改变什么
标签: reactjs use-effect