use*_*ick 3 reactjs react-select react-hook-form
我正在替换select应用程序中的一些输入以使用react-select. 在使用之前react-select,我在提交时使用该功能清除了表单中的选定选项.reset(),但现在似乎没有产生任何影响。
onSubmit我尝试在函数中存储一个变量,并将null其设置为defaultValueprop 的值,认为Controller它会重置事物。但这没有用。处理这个问题的干净方法是什么?
父表单组件:
function AddActivityForm(props) {
const { register, handleSubmit, control, watch, errors } = useForm();
const onSubmit = (data) => {
//Additional logic here
document.getElementById("activity-entry-form").reset();
};
return (
<Form id="activity-entry-form" onSubmit={handleSubmit(onSubmit)}>
<ActivityPredecessorInput
activities={props.activities}
formCont={control}
/>
<Button variant="primary" type="submit" className="mb-2">
Submit
</Button>
</Form>
);
}
export default AddActivityForm;
Run Code Online (Sandbox Code Playgroud)
儿童使用Select来自react-select:
function ActivityPredecessorInput(props) {
const activities = props.activities;
const options = activities.map((activity, index) => ({
key: index,
value: activity.itemname,
label: activity.itemname,
}));
return (
<Form.Group controlId="" className="mx-2">
<Form.Label>Activities Before</Form.Label>
<Controller
as={
<Select
isMulti
options={options}
className="basic-multi-select"
classNamePrefix="select"
/>
}
control={props.formCont}
name="activitiesbefore"
defaultValue={""}
/>
</Form.Group>
);
}
export default ActivityPredecessorInput;
Run Code Online (Sandbox Code Playgroud)
根据@Bill 在原帖评论中提供的示例回答我自己的问题。React-hook-form 提供了一个重置方法,可以非常简单地处理这种情况。
创建一个const来存储默认值(在本例中存储在父组件中)。
const defaultValues = {
activitiesbefore: "",
};
Run Code Online (Sandbox Code Playgroud)
将reset方法包含在useForm const.
const { register, handleSubmit, reset, control, watch, errors } = useForm();
Run Code Online (Sandbox Code Playgroud)
调用函数reset中的方法传递。onSubmitdefaultValues
reset(defaultValues);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14883 次 |
| 最近记录: |