如何重置Redux工具箱查询状态(查询,而不是突变)?



在Redux工具箱查询中,我们在mutations中编写如下代码:

const [purchase, { isLoading, isError, isSuccess, reset }] = useCreateOneSaleMutation()

,可以使用复位方法重置状态。

是否有一种方法,我可以做同样的查询挂钩?

const { isLoading, isError, isSuccess, reset } = useGetOneSale()
  • 我们可以做实际存在的refetch,但我需要一些东西来重置这些状态在一个组件调用时,所以我需要一个reset方法。

redux工具箱查询是否支持?

我在useEffect中依赖isSuccess来渲染一些逻辑,并且我需要这个isSuccess在组件卸载时重置回false。

我有一个模态,当这个模态关闭时,它应该重置回false,因为useEffect看起来如下:

useEffect(()=>{
switch(true){
case isSuccess:
setText('Transaction completed successfully!')
break
default:
setText('Please Enter The client id')
}
}, [isSuccess])

所以一定有像

这样的东西
useEffect(()=> ()=> reset())

,以使这种逻辑工作。

RTK Query通过"标记"处理这种类型的查询重置。查看文档中自动重新抓取部分。

在定义API端点的地方,您将说getOneSale查询提供一个名为"OneSale"的标签(或者你想叫它什么)。然后说您的createOneSale突变使无效标签。
const api = createApi({
baseQuery: /* ... */,
tagTypes: ['OneSale'],
endpoints: (build) => ({
getOneSale: build.query({
query: /* ... */,
providesTags: ['OneSale'],
}),
createOneSale : build.mutation({
query: /* ... */,
invalidatesTags: ['OneSale'],
}),
}),
})

当你的useCreateOneSaleMutation执行调用成功时,它将使'OneSale'标签无效,RTK将自动重新获取任何useGetOneSaleQuery钩子。


如果您需要通过其他方式(而不是通过突变)使标记无效,您可以通过调度invalidateTags操作来完成此操作。

dispatch(api.util.invalidateTags(['OneSale']));

相关内容

  • 没有找到相关文章

最新更新