useSubmit
<Form>
的命令式版本,允许程序员提交表单,而不是用户。
import { useSubmit } from "@remix-run/react";
function SomeComponent() {
const submit = useSubmit();
return (
<Form
onChange={(event) => {
submit(event.currentTarget);
}}
/>
);
}
submit(targetOrData, options);
targetOrData
可以是以下任何一种
<Form
onSubmit={(event) => {
submit(event.currentTarget);
}}
/>
FormData
实例
const formData = new FormData();
formData.append("myKey", "myValue");
submit(formData, { method: "post" });
将被序列化为 FormData
的普通对象
submit({ myKey: "myValue" }, { method: "post" });
将被序列化为 JSON 的普通对象
submit(
{ myKey: "myValue" },
{ method: "post", encType: "application/json" }
);
options
提交选项,与 <Form>
属性相同。所有选项都是可选的。
application/x-www-form-urlencoded
、multipart/form-data
、application/json
或 text/plain
。默认为 application/x-www-form-urlencoded
。false
以使用 fetcher 提交,而不是执行导航navigate: false
使用 fetcher 提交时要使用的 fetcher 键false
。false
。"route"
(相对于路由层次结构)或 "path"
(相对于 URL)。ReactDOM.flushSync
调用中,而不是默认的 React.startTransition
document.startViewTransition()
中,为此导航启用 视图转换useViewTransitionState()
submit(data, {
action: "",
method: "post",
encType: "application/x-www-form-urlencoded",
preventScrollReset: false,
replace: false,
relative: "route",
});
future.v3_relativeSplatPath
未来标志对 splat 路由内相对 useSubmit()
行为的影响,请参阅 useResolvedPath
文档中的 Splat 路径 部分
讨论
相关 API