reactjs - React Formik 默认值
问题描述
我正在使用反应形式。我有一个下拉选择选项。选项工作正常,但我希望从下拉列表中将默认值设为免费。如果我在没有点击的情况下提交表单,它会给我的选项值为空白。下面是我的代码:
const defautValue="Free";
const options=["Premium","Gold","Free"]
<Field>
{(props: any)=>{
const {field}=props;
const defaultOption=<option key='default' value={defaultValue}>{defaultValue}</option>
const option=options.map((i:string)=>{return (<option key={i} value={i}>{i}</option>)})
const selectOptions=[defaultOption,...option]
return (
<div>
<select value={field.value}{...field}>{selectOptions}</select>
</div>
)
}}
</Field>
解决方案
尝试删除 defaultOption、selectOptions 的手动设置,并使用formik.values
、 或form.value
,并defaultValue
使用组件的initialValues
设置Formik
组件的 :
<Formik
initialValues={{selectedOption: "Free"}: YourFormData}
onSubmit={(values, actions) => {console.log(values, actions)}}
>
{formik => (
<Form translate="yes">
<Field name="selectedOption">
{({ form, field }: FieldProps<YourFormData>) => {
const options=["Premium","Gold","Free"].map((i:string)=>{return (<option key={i} value={i}>{i}</option>)})
return (
<div>
<select {...field}>{options}</select>
</div>
)
}}
</Field>
</Form>
)}
</Formik>
字段的{...field}
扩展运算符已经添加了“值”
<Field name="selectedOption">
自动将selectedOption
formik 字段连接到<select>
元素,包括onChange
, onBlur
,touched
等。
或者您也可以使用as
例如:
<Formik
initialValues={{selectedOption: 'Free'}}
onSubmit={(values, actions) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
actions.setSubmitting(false);
}, 1000);
}}>{(props: FormikProps<any>) => (
<Form>
<Field as="select" name="selectedOption">
{["Premium","Gold","Free"].map((i:string)=>(<option key={i} value={i}>{i}</option>))}
</Field>
</Form>
)}
</Formik>
文档:
推荐阅读
- python - 为什么这段代码不会导致竞争条件?
- python - 如何在每个数据帧上附加最后一行
- flutter - 我怎样才能离开一个功能?飞镖/颤振
- javascript - JavaScript - 等到多个 ajax 请求完成然后做一些事情
- php - api 返回杂乱的数据。如何转换为对象数组
- python - 从python中的字典创建字典
- node.js - 为什么在尝试将 npm 与 CodeSandbox 一起使用时出现“无法解析 'http'”错误?
- javascript - javascript对象数组到json m级数据透视表样式数据格式
- python - 基数为 10 'Washington' 的 int() 文字无效
- c# - 我如何找出填充我的 GPU 内存的内容?