【问题标题】:Formik handle an array of objectsFormik 处理对象数组
【发布时间】:2020-07-26 04:31:00
【问题描述】:

我正在尝试实现这样的结构的对象数组

selectedItems: [
                  {
                    _id: ""
                  }
              ]

我想要做的是当用户选择例如2个或更多_id时,我希望结构是这样的

[
   {
      _id: "123"
   },

   {
      _id: "456"
   },

   {
      _id: "789"
   },
]

但我目前的实现是一个 _id 数组,其中包含多个类似这样的项目

[
   {
      _id: ["123", "456", "789"]
   }
]

我遵循了 formik 的文档,该文档建议在我们有一组对象时实施此解决方案。 我的实现

const GetSelectedItems = () => {
    return (
        <Formik
            initialValues={{
                selectedItems: [{
                    _id: ""
                }]
            }}
            onSubmit={values => {
                console.log(values)
            }}
            render={({values, handleChange}) => (
                <Form>
                    <FieldArray
                        name="selectedItems"
                        render={arrayHelpers => (
                            <div>
                                {values.selectedItems && values.selectedItems.length > 0 ? (
                                    values.selectedItems.map((item, index) => (
                                        <div key={index}>
                                            <Field as="div"
                                                   name={`selectedItems${[0]}._id`}
                                            >
                                                <select name={`selectedItems.${[0]}._id`}
                                                        multiple={true}
                                                        className="form-control"
                                                        value={item._id}
                                                        onChange={event => {
                                                            handleChange(event);
                                                        }}
                                                >
                                                    <option value={values.selectedItems._id}>
                                                        Choisir items
                                                    </option>
                                                    {itemList(items)} // data from api
                                                </select>
                                            </Field>
                                        </div>
                                    ))
                                ) : null}
                                <div>
                                    <div>
                                        <button type="submit">Submit</button>
                                    </div>
                                </div>
                            </div>
                        )}
                    />
                </Form>
            )}
        />)
}

【问题讨论】:

标签: javascript arrays reactjs forms formik


【解决方案1】:

您不需要为 select 的选项组件提供 name 属性,只需将其删除,您的代码就会按预期运行:

// Removed name props from this component
<option key={option._id} value={`${option._id}`}>
    {option._id}
</option>

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多