官方文档似乎在表单操作中引用了
redirect
函数。如果您正在构建 CMS,这很好,但是使用某些保存状态(好或坏)来简单刷新当前页面的最佳方法是什么?
在 Remix 中发布表单与将表单发布到经典 Web 服务器非常接近。除非您在
action
的 <form>
属性中指定不同的 URL,否则它将发布到当前路由,执行 action()
并重新渲染路由。这是一个导航事件,将反映在导航历史记录中。如果您要 POST 到不同的路线,Remix 将导航到新路线并渲染相关组件。 Remix 启用的客户端路由是一个渐进增强,但所有这些都可以在禁用 js 的情况下工作。
此机制可用于刷新页面,因为 remix 在处理操作时会自动重新运行当前匹配路由的所有加载器,类似于经典的 POST
但是,如果您只是想刷新数据,最新版本的 Remix 提供了 useRevalidators 恰好可以满足此用例。
如果您想了解选择此 API 的更多详细信息,请在以下问题中讨论:https://github.com/remix-run/remix/discussions/1996
我们可以在 Form 组件中将 navigation prop 设置为 false 以防止重定向/重新渲染。
<Form method="post" navigate={false} />
<Form/>