【问题标题】:setFieldValue gives always sets value boolean true from multiple selection DropdownsetFieldValue 总是从多选下拉列表中设置值 boolean true
【发布时间】:2020-12-05 09:01:06
【问题描述】:

如果我 console.log(data.value) 它确实显示了所选选项的数组。但是当我 console.log 在表单中的验证功能或提交表单时,该字段的值始终为 boolean true

初始值为[],但无论我选择哪个多个选项,输出始终为布尔真。诊断是字符串。 StateOptions 是具有键、值和文本的对象数组

其余的代码总是所有字段(我不在这里写)给出值,这是写给他们的

看起来 setFieldValue 函数(默认 Formik 道具之一)工作错误

这是字段的代码,其值始终为 true:

import { Dropdown, DropdownProps, Form } from "semantic-ui-react";

<DiagnosisSelection
diagnoses={diagnoses}
name="diagnosisCodes"
setFieldValue={setFieldTouched}
  setFieldTouched={setFieldValue}
disabled={!(entrytype)}

/>

export const DiagnosisSelection = ({
  diagnoses,
  setFieldValue,
  setFieldTouched,
  disabled,
  name
}: {
  diagnoses: DiagnosisEntry[];
  setFieldValue: FormikProps<{ diagnosisCodes: string[] }>["setFieldValue"];
  setFieldTouched: FormikProps<{ diagnosisCodes: string[] }>["setFieldTouched"];
  disabled:boolean;
  name:string;
}) => {
  const field = "diagnosisCodes";
  const onChange = (
    _event: React.SyntheticEvent<HTMLElement, Event>,
    data: DropdownProps
  ) => {
    setFieldTouched(field, true);
    setFieldValue(field, data.value);
  };

  const stateOptions = diagnoses.map(diagnosis => ({
    key: diagnosis.code,
    text: `${diagnosis.name} (${diagnosis.code})`,
    value: diagnosis.code
  }));


if (disabled)
  return null
  return (
    <Form.Field name={name}>
      <label>Diagnoses</label>
      <Dropdown
      name={name}
        fluid
        multiple
        search
        selection
        options={stateOptions}
        onChange={onChange}
      />
      <ErrorMessage name={field} />
    </Form.Field>
  );
};

【问题讨论】:

    标签: reactjs dropdown formik semantic-ui-react


    【解决方案1】:

    看来我写错了:setFieldValue 是 setFieldTouched,反之亦然:

    <DiagnosisSelection
      diagnoses={diagnoses}
      name="diagnosisCodes"
      setFieldValue={setFieldValue}
      setFieldTouched={setFieldTouched}
      disabled={!(entrytype)}
    />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多