簡體   English   中英

在提交時從 react-hook-form 中的 react-select 重置選定的值?

[英]Reset selected values from react-select within react-hook-form on submit?

我正在替換我的應用程序中的一些select輸入以使用react-select 在使用react-select之前,我使用.reset() function 在提交時清除表單中的選定選項,現在似乎沒有任何影響。

我嘗試在onSubmit function 中存儲一個變量,其中null作為要設置為Controller中的defaultValue屬性的值,認為它會重置。 然而這並沒有奏效。 什么是處理這個問題的干凈方法?

父表單組件:

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;

使用來自react-select 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;

根據@Bill 在原始帖子的評論中提供的示例回答我自己的問題。 React-hook-form 提供了一種重置方法,可以非常簡單地處理這種情況。

創建一個const來存儲默認值(在這種情況下存儲在父組件中)。

const defaultValues = {
  activitiesbefore: "",
};

useForm const中包含reset方法。

const { register, handleSubmit, reset, control, watch, errors } = useForm();

在傳遞defaultValuesonSubmit function 中調用reset方法。

reset(defaultValues);

您可以將 onClick onClick={()=> setValue("activitiesbefore", "")}參數與來自 useForm const { register, handleSubmit, errors, reset, control, setValue} = useForm(); 到重置按鈕,或提交按鈕

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM