React select 更改 selected 值

React select change the selected value

我正在尝试构建多个 select 项目。我的后端数据结构是这样的对象数组

{
"selectedItems": [
      {"_id" : ""}
   ]
}

react-select 的问题是当我 select 一个或多个项目时,结构与我的后端路由不匹配,它显示如下

{
"selectedItems": [
      {"value" : "", label : ""}
   ]
}

我正在使用 Formik 管理表单,您也可以在控制台日志sandbox上看到结果

const ItemSelected = () => {
    const items = [
        {
            _id : "123", name : "john", desc : 'eb'
        },
        {
            _id : "456", name : "doe", desc : 'ec'
        },
        {
            _id : "789", name : "seal", desc : 'ef'
        }
    ]

    const itemList = (options) => {
        return (
            options &&
            options.map(option => {
                return {
                    value: option._id,
                    label: option.name
                };
            })
        );
    }

    return(
        <div>
            <Formik
                initialValues={{
                    selectedItems  : []
                    }}

                onSubmit={values => {
                    console.log(values)
                }}
            >
                    {({
                          values,
                          handleSubmit,
                          setFieldValue

                      }) => (
                        <Form onSubmit={handleSubmit}>
                            <div className="row">
                                <div className="col">
                                    <Select
                                        isMulti
                                        name={`selectedItems`}
                                        value={values.selectedItems}
                                        onChange={e=>setFieldValue(`selectedItems`, e)}
                                        options={itemList(items)}
                                        className="basic-multi-select"
                                        classNamePrefix="select"
                                    />
                                </div>
                                <div className="col">
                                    <button type="submit">
                                        submit
                                    </button>
                                </div>
                            </div>
                        </Form>
                    )}
                </Formik>
        </div>
    )
}

您需要在处理提交时使用map来创建您想要的数据结构。

onSubmit={values => {
  if(values.selectedItems){
    const data = values.selectedItems.map(value => ({_id: value.value}))
    console.log(data);
  }
}}