如何将数据从状态传递到 Formik initialValues?
How to pass the data from a state to a Formik initialValues?
我的表单中有一个组件将标签存储在 useState 中,但我不知道如何将该数组发送到 Formik 的 initialValues。我需要能够将该数据发送到 Formik 的 initialValues 中名为“tags”的键,如果有人可以帮助我,非常感谢。
const AddProject2 = () => {
const [tags, setTags] = useState([]);
return (
<Formik
initialValues={{
name: "",
tags: [],
}}
onSubmit={(values) => {
console.log(values);
}}
>
{() => (
<Form>
<div>
<label htmlFor="name">NameProject</label>
<Field type="text" name="name" />
</div>
<ReactTagInput
placeholder="Write the tags"
tags={tags}
onChange={(newTags) => setTags(newTags)}
/>
<button type="submit">Send</button>
</Form>
)}
</Formik>
);
};
export default AddProject2;
如果您只是将 tags
状态从 useState()
传递到 initialValues 中,如下所示,它应该可以工作。这将是 shorthand 用于放置 {name: "", tags: tags}
<Formik
initialValues={{
name: "",
tags,
}}
onSubmit={(values) => {
console.log(values);
}}
>
-编辑-
关于您评论中的新问题。
这可能是 Formik 工作方式的问题。查看他们的文档,似乎使用 formic 处理输入控制的方法并不直接使用 onChange,相反,您需要使用 {...formik.getFieldProps('tags')}
传递一系列道具
所以:
{formik => (
<Form>
<div>
<label htmlFor="name">NameProject</label>
<Field type="text" name="name" />
</div>
<ReactTagInput
placeholder="Write the tags"
tags={tags}
{...formik.getFieldProps('tags')}
/>
)}
这是否与 ReactTagInput 兼容,我不知道,但值得一试。
我的表单中有一个组件将标签存储在 useState 中,但我不知道如何将该数组发送到 Formik 的 initialValues。我需要能够将该数据发送到 Formik 的 initialValues 中名为“tags”的键,如果有人可以帮助我,非常感谢。
const AddProject2 = () => {
const [tags, setTags] = useState([]);
return (
<Formik
initialValues={{
name: "",
tags: [],
}}
onSubmit={(values) => {
console.log(values);
}}
>
{() => (
<Form>
<div>
<label htmlFor="name">NameProject</label>
<Field type="text" name="name" />
</div>
<ReactTagInput
placeholder="Write the tags"
tags={tags}
onChange={(newTags) => setTags(newTags)}
/>
<button type="submit">Send</button>
</Form>
)}
</Formik>
);
};
export default AddProject2;
如果您只是将 tags
状态从 useState()
传递到 initialValues 中,如下所示,它应该可以工作。这将是 shorthand 用于放置 {name: "", tags: tags}
<Formik
initialValues={{
name: "",
tags,
}}
onSubmit={(values) => {
console.log(values);
}}
>
-编辑- 关于您评论中的新问题。
这可能是 Formik 工作方式的问题。查看他们的文档,似乎使用 formic 处理输入控制的方法并不直接使用 onChange,相反,您需要使用 {...formik.getFieldProps('tags')}
所以:
{formik => (
<Form>
<div>
<label htmlFor="name">NameProject</label>
<Field type="text" name="name" />
</div>
<ReactTagInput
placeholder="Write the tags"
tags={tags}
{...formik.getFieldProps('tags')}
/>
)}
这是否与 ReactTagInput 兼容,我不知道,但值得一试。