为什么没有使用 NextJS 从表单提交动态值?

发布于 2025-01-09 18:21:53 字数 1048 浏览 2 评论 0原文

我正在基于 NextJS 代码开发 React。

如果我在表单字段中手动输入值并提交表单,我将获得组件函数中的所有值。

但是,如果我在表单字段(例如 value={query.campaignid})中动态显示值,则该组件不会收集任何值。

import { Button, Input } from "@chakra-ui/react";
import { Field, Form, Formik } from "formik";

import { useRouter } from "next/router";

export default function FormikExample() {
  const { query } = useRouter();

  return (
    <>
      <Formik
        initialValues={
          {
            // campaignid: " ",
          }
        }
        onSubmit={(values) => {
          setTimeout(() => {
            console.log(values);
          });
        }}
      >
        {(props) => (
          <Form>
            <Field name="campaignid">
              <Input value={query.campaignid} />
            </Field>

            <Button id="submited" isLoading={props.isSubmitting} type="submit">
              Submit
            </Button>
          </Form>
        )}
      </Formik>
    </>
  );
}

I'm working on React based on NextJS code.

If I manually enter values in form fields and submit the form, I get all the values in the component function.

But if I dynamically display values in a form field like value={query.campaignid}, the component does not collect any value.

import { Button, Input } from "@chakra-ui/react";
import { Field, Form, Formik } from "formik";

import { useRouter } from "next/router";

export default function FormikExample() {
  const { query } = useRouter();

  return (
    <>
      <Formik
        initialValues={
          {
            // campaignid: " ",
          }
        }
        onSubmit={(values) => {
          setTimeout(() => {
            console.log(values);
          });
        }}
      >
        {(props) => (
          <Form>
            <Field name="campaignid">
              <Input value={query.campaignid} />
            </Field>

            <Button id="submited" isLoading={props.isSubmitting} type="submit">
              Submit
            </Button>
          </Form>
        )}
      </Formik>
    </>
  );
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瀞厅☆埖开 2025-01-16 18:21:53

解决了!

我将 URL 查询传递给 initialValues 并在下面添加了 enableReinitialize={true}

...
     initialValues={{
        campaignId: query.campaignid,         
     }}
     enableReinitialize={true}
...

在输入值中我传递了这些属性:

 <Field name="campaignid">
       <Input value={props.values.campaignId} />
  </Field>

Resolved!

I passed the URL query to initialValues and added enableReinitialize={true} below:

...
     initialValues={{
        campaignId: query.campaignid,         
     }}
     enableReinitialize={true}
...

In the input value I passed those props:

 <Field name="campaignid">
       <Input value={props.values.campaignId} />
  </Field>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文