当我向端点一添加新值时,我有两个端点,我希望端点二由 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/