Redux ToolKit Query - 在同一组件中进行多个查询相互依赖

adr*_*dev 5 reactjs redux-toolkit rtk-query

我正在尝试在 NextJS 应用程序中使用 RTK 查询从 API 获取多个实体。我有AppAppVersion型号。当组件加载时,我需要获取App然后获取适当的AppVersions。AnApp具有currentVersionId链接到 和 的属性AppVersion

该代码失败,因为该组件首先在没有路由器的情况下呈现,它无法获取应用程序并且没有app.currentversionId.

我有两个切片可以从 RESTful API 获取适当的对象。

function AppsShow() {
  const router = useRouter()
  const { id } = router.query
  const { data: app } = useGetAppQuery(parseInt(id, 10)) // from RTK Query slice
  const currentVersion = useGetVersionQuery(app?.currentVersionId) // from RTK Query slice

  return (
    <div></div>
  )
}

Run Code Online (Sandbox Code Playgroud)

这里使用什么合适的模式?谢谢你!

phr*_*hry 6

使用该skip选项:)

function AppsShow() {
  const router = useRouter()
  const { id } = router.query
  const { data: app } = useGetAppQuery(parseInt(id, 10)) // from RTK Query slice
  const currentVersion = useGetVersionQuery(app?.currentVersionId, { skip: !app?.currentVersionId })

  return (
    <div></div>
  )
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用skipTokenRTK-Query 导出的(这种方法可能与 TypeScript 配合使用效果更好)

function AppsShow() {
  const router = useRouter()
  const { id } = router.query
  const { data: app } = useGetAppQuery(parseInt(id, 10)) // from RTK Query slice
  const currentVersion = useGetVersionQuery(app?.currentVersionId ?? skipToken)

  return (
    <div></div>
  )
}
Run Code Online (Sandbox Code Playgroud)