0

我正在尝试使用 Remix 的 useSubmit 钩子提交表单。但我希望能够将任意数据与我的表单提交数据一起传递。

我有一些具有禁用/只读属性的静态值的表单元素,这意味着它们的值在表单提交时将为空。但是,我可以在我的变量中访问它们的实际值,post我想将其发送给我的操作。

export const action: ActionFunction = async (request) => {
  // I want access to {arbitraryData} here passed from submit
}

export default function EditSlug() {
  const post = useLoaderData();

  // ...Submit handler passing arbitrary data (post.title in this case)
  const handleSubmit = (event: any) => {
      submit(
        { target: event?.currentTarget, arbitraryData: post.title },
        { method: "post", action: "/admin/edit/{dynamicRouteHere}" }
      );
    };

  return(
  <Form method="post" onSubmit={handleSubmit}>
            <p>
              <label>
                Post Title:
                <input
                  type="text"
                  name="title"
                  value={post.title}
                  disabled
                  readOnly
                />
              </label>
            </p>

有没有办法使用 handleSubmit 在我的操作中接收自定义数据?

4

1 回答 1

1

(对于它的价值,只读输入被发送到表单,而禁用则不是,所以也许你只能使用只读)

要将任意数据提交给操作,您可以使用隐藏输入:

 <Form method="post" onSubmit={handleSubmit}>
            <p>
              <label>
                Post Title:
                <input
                  type="text"
                  name="title"
                  value={post.title}
                  disabled
                  readOnly
                />
                <input type="hidden" name="title" value={post.title} />
              </label>
            </p>
于 2022-02-15T09:13:16.893 回答