【发布时间】: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