我认为这与"Data Writes" 主题有关。
每当提交表单时,它都会重新加载页面上所有路由的所有数据。这就是为什么许多人会使用像 redux 这样的全局状态管理库。
我不知道它是否有帮助,但在这里我有一个简单的方法,您可以发送一个发布请求,使用操作更新它并使用加载器在 URL 处加载内容搜索。
export const action: ActionFunction = async ({ request }) => {
const form = await request.formData();
const key = form.get("key");
return redirect(`/?key=${key}_updated`);
};
export const loader: LoaderFunction = async ({ request }: any) => {
const url = new URL(request.url);
const key = url.searchParams.get("key");
return json({ key });
};
export default function Index() {
const loaderData = useLoaderData();
return (
<div>
<span>loaderData: {loaderData.key}</span>
<Form method="post">
<input type="text" id="key" name="key" defaultValue={loaderData.key} />
<button>Submit</button>
</Form>
</div>
);
}