reactjs - React Formik 默认值

标签 reactjs typescript

我正在使用 React formik。我有一个下拉选择选项。选项工作正常,但我希望从下拉列表中将默认值设置为 Free。如果我在没有点击的情况下提交表单,它给我的选项值为空白。
下面是我的代码:

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 的手动设置,选择选项,然后使用 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>

文档:
  • https://jaredpalmer.com/formik/docs/api/field
  • 关于reactjs - React Formik 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62396412/

    相关文章:

    Javascript 合并对象数组中的重复项

    typescript - Jest 不会转换模块 - SyntaxError : Cannot use import statement outside a module

    unit-testing - Firebase 函数 TypeScript 单元测试 devDependencies

    angular - native 脚本 Angular : How do I bind other pages into a TabView?

    javascript - react -使用方法进行样式设置是一种很好的做法

    javascript - Webpack 配置 - 添加另一个入口文件

    javascript - 使用效果不起作用,仅在刷新页面后起作用

    javascript - 从嵌套的 map 对象javascript中删除重复项

    reactjs - React Native - 找不到模块 X 或其相应的类型声明

    typescript - 如何获得 TypeScript 映射类型的逆?