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