redux RTK查询仅轮询固定次数

icnyk63a  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(108)

我试图实现一个轮询与redux工具包RTK查询。我的需要是执行轮询只有固定的次数(这个次数来自预加载的配置).轮询本身的过程非常简单,根据文档,我看到在钩子中添加选项pollingInterval就足够了,但我不明白如何才能实现只执行固定次数的轮询。
我的服务

  • service.ts*
export const landingPageApi = createApi({
    reducerPath: 'landingPageApi',
    baseQuery: dynamicBaseQuery,
    endpoints: (builder) => ({
        ...,
        deepCheck: builder.query<HttpResponse<PaymentTransactionResponse>, { paymentId: string; deepCheck: boolean }>({
            query: ({ paymentId, deepCheck }) => `some-url`,
            async onQueryStarted(queryArg, { dispatch, queryFulfilled }) {
                const { data } = await queryFulfilled
                const { payload } = data
                dispatch(updateTransactions(data.payload.transactionList ?? []))
            },
        })
    }),
})

字符串
在我的React组件中,我使用自动创建的钩子useDeepCheckQuery,并尝试以这种方式执行轮询

  • 组件.tsx*
export function TransactionDetail(props: Props) {
    let pollingCount = 0;
    // some code ...
    const {} = useDeepCheckQuery(
         {
             paymentId: props.paymentId,
             deepCheck: pollingCount++ === 3,
         },
         {
             skip: pollingCount++ > 3 && !['PMT_IN_PRGS', 'PAYMENT_STARTED'].includes(props.transaction.status),
             pollingInterval: 3000,
         },
     )


但它不起作用
例如,如果固定次数为3次,则需要执行API调用3次,前2次使用属性deepCheck=false x,最后一次使用属性deepCheck=true x。

wd2eg0qa

wd2eg0qa1#

我正在解决同样的问题。我还没有找到解决方案,我会尝试你的方法来增加轮询计数。但我看到你的初始化轮询计数中有一个缺陷。它在每次渲染时总是0。你需要把它放在useState中。

相关问题