【发布时间】:2021-09-13 21:06:00
【问题描述】:
我有一个非常简单的提交表单,我正在使用 React-hook-form 来实现,我遇到了这个奇怪的问题,即我第一次提交时全局状态没有更新,但它可以工作第二次。这是我的代码:
export default function Enter() {
const { register, handleSubmit, watch, formState: { errors } } = useForm();
const { state, dispatch } = useContext(Store)
const onSubmit = (data) => {
console.log('sending user: ', data.username)
dispatch({
type: 'SET_PLAYER',
payload: data.username
})
console.log('UPDATED CLIENT STATE: ', state)
}
return (
<>
<form onSubmit={handleSubmit(onSubmit)}>
<p>Enter your name to join lobby</p>
<input {...register("username", { required: true })} />
{errors.exampleRequired && <span>This field is required</span>}
<input type="submit" />
</form>
</>
);
}
这是状态似乎落后的图片,基本上:
【问题讨论】:
-
功能中途无法刷新状态。 React 获取函数并执行它。之后,它会刷新状态的其余部分。因此,在您的
dispatch函数调用之后的onSubmit内,我不希望state包含您刚刚发送的新状态,因为您仍然处于同一个函数中。在同一个函数中使用data。
标签: reactjs react-hooks react-hook-form