reactjs - 为什么我不能在 React 中读取 Formik 的下拉值?
问题描述
我在反应应用程序中使用 Formik 和 Yup 作为表单控件。我也使用语义 UI。在应用程序中,当我单击提交按钮时,虽然我可以从 FormField 元素中读取值并在控制台上查看它们,但我无法从下拉元素中获取值并且它们在控制台上显示为空白。我该如何解决这个问题?
return (
<div>
<Card fluid>
<Card.Content>
<Card.Header>Create A New Job Ad</Card.Header>
<Divider inverted />
<Formik
initialValues={initialValues}
validationSchema={jobAdCreateSchema}
onSubmit={(values) => {
console.log(values);
}}
>
<Form className="ui form">
<label>Job Title</label>
<FormField>
<Field name="jobTitle" placeholder="Select a Job Title"></Field>
</FormField>
<FormField>
<label>City</label>
<Dropdown
name="city"
placeholder="Select a City"
fluid
selection
options={cityOption}
/>
</FormField>
<FormField>
<Button color="green" type="submit">
Submit
</Button>
</FormField>
</Form>
</Formik>
</Card.Content>
</Card>
</div>
);
解决方案
问题在于Dropdown
当前呈现组件的方式。您需要利用setFieldValue
Formik 提供的手动更新 Formik 状态。
<Formik
initialValues={{
city: ""
}}
onSubmit={(values) => console.log(values)}
>
{({ values, setFieldValue }) => (
<div>
<pre>{JSON.stringify(values, undefined, 2)}</pre>
<Dropdown
selection
placeholder="Select a City"
options={[
{ value: "NY", text: "New York" },
{ value: "LA", text: "Los Angeles" },
{ value: "SF", text: "San Fransico" }
]}
value={values.city}
onChange={(_, { value }) => setFieldValue("city", value)}
/>
<div>{values.pet1}</div>
</div>
)}
</Formik>
推荐阅读
- json - 如何处理具有空值的 api 响应?科特林
- python - Python 类输入改进
- python - 合并Python中名称部分匹配的文件
- c++ - 使用 Visual Studio Code 设置 openCV
- javascript - 更新状态时循环反应
- c# - 使用 swagger 发送列表参数
- bioinformatics - Snakemake无法识别规则
- java - 如何在单个 jvm 运行时创建多个 InitialContext(s)?
- python - 如何解决linearmodels.panel.PanelOLS错误“无法在MultiIndex的级别上设置名称。改用'MultiIndex.set_names'。”
- php - 两个右连接在一个查询中选择mysql