react如何给from中重设置值
重置表单值的常用方法
在React中,重置表单值可以通过多种方式实现,具体取决于使用的表单管理方式(受控组件、非受控组件或表单库)。
使用受控组件重置
对于受控组件,通过更新组件的state来重置表单值:

import { useState } from 'react';
function Form() {
const [formData, setFormData] = useState({
username: '',
password: ''
});
const handleReset = () => {
setFormData({
username: '',
password: ''
});
};
return (
<form>
<input
value={formData.username}
onChange={(e) => setFormData({...formData, username: e.target.value})}
/>
<input
value={formData.password}
onChange={(e) => setFormData({...formData, password: e.target.value})}
/>
<button type="button" onClick={handleReset}>Reset</button>
</form>
);
}
使用非受控组件重置
通过ref直接操作DOM元素:

import { useRef } from 'react';
function Form() {
const formRef = useRef();
const handleReset = () => {
formRef.current.reset();
};
return (
<form ref={formRef}>
<input name="username" defaultValue="" />
<input name="password" defaultValue="" />
<button type="button" onClick={handleReset}>Reset</button>
</form>
);
}
使用Formik重置
使用Formik表单库时,可直接调用resetForm方法:
import { useFormik } from 'formik';
function Form() {
const formik = useFormik({
initialValues: { username: '', password: '' },
onSubmit: values => console.log(values),
});
return (
<form onSubmit={formik.handleSubmit}>
<input
name="username"
value={formik.values.username}
onChange={formik.handleChange}
/>
<input
name="password"
value={formik.values.password}
onChange={formik.handleChange}
/>
<button type="button" onClick={formik.resetForm}>Reset</button>
</form>
);
}
使用React Hook Form重置
使用React Hook Form库时,调用reset方法:
import { useForm } from 'react-hook-form';
function Form() {
const { register, handleSubmit, reset } = useForm();
return (
<form onSubmit={handleSubmit(data => console.log(data))}>
<input {...register("username")} />
<input {...register("password")} />
<button type="button" onClick={() => reset()}>Reset</button>
</form>
);
}
注意事项
- 受控组件方式需要手动管理每个输入字段的状态
- 非受控组件方式简单但不符合React的数据流原则
- 表单库提供了更完善的解决方案,适合复杂表单场景
- 重置时可能需要同时清除验证错误状态






