RTK 查询重置
RTK Query reset
我有一个 MUI 对话框组件,它在保存时触发 useLazyQuery 操作以获取数据。
然后在成功调度另一个动作
我的问题是,成功后,我想在对话框组件中重置 useLazyQuery 挂钩的状态,因为在 success/fail 之后,状态在组件中像这样“卡住”。
我很困惑我应该如何处理这个...
卸载并安装对话框组件有效,但它会删除淡出动画并取消订阅查询端点。
这里有没有我遗漏的最佳实践?
https://redux-toolkit.js.org/rtk-query/api/created-api/hooks
嗯,我可能只是使用带有 setState
的普通查询挂钩,而不是 lazyQuery
。这样你就可以skip
了。
const [arg, setArg] = useState(null)
const result = useMyQuery(arg, { skip: arg == null })
然后setArg(null)
“重置”这个东西。
所以我最终使用了没有钩子的 RTKQuery
创建了一个自定义挂钩并在内部使用了 initiate 和 select
使用 useSelector 和 dispatch,
比我可以在 isSuccess 为真时重置 someId
dispatch(api.endpoints.getData.initiate(someId));
const {data, isError, isLoading} = useSelector(state => api.endpoints.getData.select(someId)(state))
我有一个 MUI 对话框组件,它在保存时触发 useLazyQuery 操作以获取数据。
然后在成功调度另一个动作
我的问题是,成功后,我想在对话框组件中重置 useLazyQuery 挂钩的状态,因为在 success/fail 之后,状态在组件中像这样“卡住”。
我很困惑我应该如何处理这个...
卸载并安装对话框组件有效,但它会删除淡出动画并取消订阅查询端点。
这里有没有我遗漏的最佳实践?
https://redux-toolkit.js.org/rtk-query/api/created-api/hooks
嗯,我可能只是使用带有 setState
的普通查询挂钩,而不是 lazyQuery
。这样你就可以skip
了。
const [arg, setArg] = useState(null)
const result = useMyQuery(arg, { skip: arg == null })
然后setArg(null)
“重置”这个东西。
所以我最终使用了没有钩子的 RTKQuery
创建了一个自定义挂钩并在内部使用了 initiate 和 select
使用 useSelector 和 dispatch,
比我可以在 isSuccess 为真时重置 someId
dispatch(api.endpoints.getData.initiate(someId));
const {data, isError, isLoading} = useSelector(state => api.endpoints.getData.select(someId)(state))