我正在使用Formik构建表单。

我的表单有三个文本区域和1个选择下拉菜单

对于选择下拉菜单,我使用了IssueSelect(在Formik中为FieldArray)。

还有IssueSelect,我同时使用了Create和Update Form。

我的组件看起来像这样:

const IssueSelect = ({ values }) => (


<FieldArray
    name="issues"
    render={({ remove, insert, push }) => (
      <div>
        {values.issues && values.issues.length > 0 ? (
          values.issues.map((iselected, index) => (
            <div key={uuidv1()}>
              <div>
                <Field
                  value={iselected.id}
                  component="select"
                  name={`issues.${index}`}
                >
                  {issues.map(issue => (
                    <option key={issue.id} value={issue.id}>
                      {issue.name}
                    </option>
                  ))}
                </Field>
              </div>

              <div>
                <button onClick={() => remove(index)}>
                  <b> - </b>
                </button>
                <button onClick={() => insert(index, issues[0].id)}>
                  <b> + </b>
                </button>
              </div>
            </div>
          ))
        ) : (
          <button onClick={() => push(issues[0].id)}>
            <b> + </b> Add new issue
          </button>
        )}
      </div>
    )}
  />
);

export default IssueSelect;

在“创建表单”中,一切正常。

但是,在Update Form中,我将initialValue传递给IssueSelect组件,它正确显示了我已传递的数据。但是我无法更改选择框中的选项。

我通过传递value={iselected.id}设置了默认值
当我通过此 Prop 时,请创建表格。它不再起作用了。

您可以检查我的代码和框,以确切了解我的意思:
https://codesandbox.io/s/rr1o8x3ppq

先感谢您。

最佳答案

<Field
   component="select"
   name="select"
   className={'form-control'}
   variant="outlined">

    <option value='one' >One</option>
    <option value='two'>Two</option>
    <option value='three'>Three</option>

</Field>

要设置为默认选项的选项,需要为第一个选项标签编写。它将设置为默认选项。有效。

09-25 17:41
查看更多