1

当我向端点一添加新值时,我有两个端点我希望通过 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]);

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

4

1 回答 1

1

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

可以做一个

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

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

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

所以你的端点getPost有一个providesTags返回的函数,[{ type: 'Post', id: 5 }]你的addNewComment突变也有一个invalidatesTags返回的函数[{ type: 'Post', id: 5 }]

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

请阅读有关自动重新获取的文档章节

于 2021-10-01T08:35:37.093 回答