redux-toolkit - 如何通过 useEffect 更新 rtk 查询中的状态

标签 redux-toolkit rtk-query

当我向端点一添加新值时,我有两个端点,我希望端点二由 useEffect Hook 更新

const PostDetails = (props) => {
   const id = props.match.params.id;

   const [addNewComment, { isSuccess: success, isError }] = useAddNewCommentMutation();

 

   const dispatch = useDispatch();

   const selectPost = useMemo(() => postApi.endpoints.getPost.select(id), [id]);
   const { data: post, isLoading } = useSelector(selectPost);

   useEffect(() => {
      const result = dispatch(postApi.endpoints.getPost.initiate(id));

      return result.unsubscribe;
   }, [id, dispatch, success]);

它说 名称(引脚):“条件错误” message(pin):“由于条件回调返回 false 而中止。”

最佳答案

这只是意味着“已经有数据,我没有理由假设它已经过时,我不会再次获取”。

可以

dispatch(postApi.endpoints.getPost.initiate(id, {forceRefetch: true}));

但这不是你应该在这里做的。

您真正应该使用的是失效功能。

因此,您的端点 getPost 有一个 providesTags 函数,该函数返回 [{ type: 'Post', id: 5 }] 和您的 addNewComment 突变有一个 invalidatesTags 函数,它也返回 [{ type: 'Post', id: 5 }]

这样,每当您调用 addNewComment 突变时,getPost 端点都会重新获取。

请阅读有关 Automated Refetching 的文档章节

关于redux-toolkit - 如何通过 useEffect 更新 rtk 查询中的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69402541/

相关文章:

reactjs - 有没有办法获取存储在 api slice [RTK Query] 中的所有响应?

react-redux - 代码分割时如何修改prepareHeaders设置的RTK查询的标题?

reactjs - RTK查询拦截多个请求

redux - Slice 在 reducer 中的 State 自引用

reactjs - react & RTK : How to dispatch from a middleware?

reactjs - 访问 RTK 查询中的缓存数据(新)

redux - Redux 工具包中的多个切片中的操作

reactjs - 如何从 redux 工具包 async thunk 的挂起状态修改另一个切片的状态

reactjs - 使用 redux reducer 和 selector 连接 RTK Query API

reactjs - 处理获取的数据 - RTK Query/Redux 工具包/React