Remix:以编程方式触发加载器



Remix是否有直接的方式以编程方式触发当前路由的加载器?

作为一种解决方案,我使用useSubmit提供的函数来触发一个'空'动作-动作本身什么也不做,但所有动作触发加载器,所以它做我想要的。

我认为这是好的,但感觉相当粗糙。我有点期望有一个内置的API来做这件事,但无法通过谷歌找到任何东西。

也许这只是程序性地触发加载器是反对"混音方式"-事实上,我需要这涉及到一些动态的用户界面,这就是为什么我不能只是依靠常规的行动->重新加载工作流-但好奇是否有人知道一个直接的,或不太黑客的方式来做到这一点?

const navigate = useNavigate()
navigate(‘.’, { replace: true })

这就像你正在导航到当前的’.’路由,它将调用当前页面的加载器。如果您想确保历史堆栈保持不变,请添加替换。

https://reactrouter.com/docs/en/v6/hooks/use-navigate

如果你想在Remix中以编程方式调用加载器,你可以使用Remix提供的useFetcher钩子。钩子返回一个带有"加载"的对象。函数,可用于从加载器中获取数据。然后将数据存储在"数据"中。从对象中获取,并可以被该道具访问。load函数需要一个url作为参数。如果加载器位于/routes/foo/bar。Tsx,那么url应该是/foo/bar。

最新更新