RTK 查询中的链 2 查询

问题描述 投票:0回答:3

如果第二个查询需要第一个查询返回的参数,那么链接查询的正确方法是什么?

const { data: user } = useGetUserQuery();

用户对象包含一个用于运行的ID

const { data: userBio} = useGetUserBioQuery(user.id);

如何确保第二个仅在第一个完成后才运行?

javascript reactjs redux react-redux rtk-query
3个回答
20
投票

您可以使用

skip
选项:

const { data: user, isFulfilled: userFulfilled } = useGetUserQuery();
const { data: userBio} = useGetUserBioQuery(user.id, { skip: !userFulfilled });

或者

skipToken

import { skipToken } from '@reduxjs/toolkit/query/react'

const { data: user, isFulfilled: userFulfilled } = useGetUserQuery();
const { data: userBio} = useGetUserBioQuery(userFulfilled ? user.id : skipToken);

6
投票
RTK 查询文档的使用部分还提供了另一个示例,介绍如何将多个请求与一个查询结合起来,我发现该示例对于该用例非常有用:

https://redux-toolkit.js.org/rtk-query/usage/customizing-queries#performing-multiple-requests-with-a-single-query


4
投票
我们可以使用

skip

 标志来确定是否有用户 ID 

const { data: user } = useGetUserQuery(); const { data: userBio} = useGetUserBioQuery(user.id, { skip: !user.id });
    
© www.soinside.com 2019 - 2024. All rights reserved.