HydrateFallback
HydrateFallback
HydrateFallback
组件是一种通知 Remix 您不想在 clientLoader
运行 hydration 之前渲染路由组件的方式。导出后,Remix 将在 SSR 期间渲染 fallback 而不是您的默认路由组件,并在 clientLoader
完成后在客户端渲染您的路由组件。
最常见的用例是仅限客户端的路由(例如浏览器内的画布游戏)以及使用客户端数据(例如已保存的用户偏好)扩充服务器数据。
关于 HydrateFallback
的行为,有几个细微差别值得注意:
- 它只与初始文档请求和水合有关,不会在任何后续客户端导航中呈现
- 仅当您在给定路由上设置
clientLoader.hydrate=true
时才相关 - 如果您有一个没有服务器
loader
的clientLoader
,它也相关,因为这意味着clientLoader.hydrate=true
,因为否则根本没有加载器数据可以从useLoaderData
返回 - 即使您在这种情况下没有指定
HydrateFallback
,Remix 也不会呈现您的路由组件,并且会冒泡到任何祖先HydrateFallback
组件 - 这是为了确保
useLoaderData
保持快乐路径
- 如果没有服务器
loader
,useLoaderData
将在任何呈现的路由组件中返回undefined
- 您无法在
HydrateFallback
中呈现<Outlet/>
,因为无法保证子路由正常运行,因为它们的祖先加载器数据可能不如果它们在 hydration 上运行clientLoader
函数,则仍然可用(即,诸如useRouteLoaderData()
或useMatches()
之类的用例)
参见: