关于提交和使用状态问题的 React-hook-form
React-hook-form on submit and useState issue
嘿,我在使用 react-hook-form 时遇到了这个奇怪的问题。
这是我的代码的要点
const [error, setError] = useState(true)
const onSubmit = values => {
setError(false)
console.log(error) // true on first click and false on second click
}
<input type="submit" />
如您所见,第一次单击输入时错误为真,第二次单击时为错误。
我预计第一次点击输入时错误是假的,有人知道为什么是真的吗?
注意:我的表单是一个嵌套表单,我在其中使用 FormContext 来包装我的表单,这样我就可以将表单拆分成更小的组件。可能是这导致了这种副作用,还是我遗漏了一些明显的东西?
是的,React 很奇怪。 setError(false)
是 运行 第一次和改变状态,但不保证是同步的。所以紧随其后的 console.log() 仍然具有旧状态。
React hooks useState not updating with onChange
React 状态更改是异步的。不保证您将获得同步 console.log
中的最新更改。如果您想查看最近的更改,则记录值的正确方法是在 useEffect
挂钩内。
const [error, setError] = useState(true)
useEffect(() => {
console.log(error)
}, [error]);
嘿,我在使用 react-hook-form 时遇到了这个奇怪的问题。
这是我的代码的要点
const [error, setError] = useState(true)
const onSubmit = values => {
setError(false)
console.log(error) // true on first click and false on second click
}
<input type="submit" />
如您所见,第一次单击输入时错误为真,第二次单击时为错误。
我预计第一次点击输入时错误是假的,有人知道为什么是真的吗?
注意:我的表单是一个嵌套表单,我在其中使用 FormContext 来包装我的表单,这样我就可以将表单拆分成更小的组件。可能是这导致了这种副作用,还是我遗漏了一些明显的东西?
是的,React 很奇怪。 setError(false)
是 运行 第一次和改变状态,但不保证是同步的。所以紧随其后的 console.log() 仍然具有旧状态。
React hooks useState not updating with onChange
React 状态更改是异步的。不保证您将获得同步 console.log
中的最新更改。如果您想查看最近的更改,则记录值的正确方法是在 useEffect
挂钩内。
const [error, setError] = useState(true)
useEffect(() => {
console.log(error)
}, [error]);