我只想使用RTK作为onSuccess函数的一部分来运行API请求,并等待响应。我在Axios中这样做没有问题,但我试图用RTK替换我的Axios调用,并且在使用LazyQuery时遇到了问题。
我得到了一个例外
useLazyQuery不是函数,或者它的返回值不可迭代。
我的API:
const linkAPI = overweightRTK.injectEndpoints({
tagTypes: ['Link'],
endpoints: (builder) => ({
createLink: builder.mutation({
query: (body) => ({
url: `/links/`,
method: 'POST',
body,
invalidatesTags: ['Link']
})
})
}),
overrideExisting: false
});
export const { useCreateLinkMutation} = linkAPI;我的组成部分:
const [trigger, result, lastPromiseInfo] = OverweightRTK.endpoints.createLink.useLazyQuery()
const onSuccess = async (data) => {
const createLinkRequest = {
payload: data
};
trigger({ createLinkRequest }, { skip: !isSubscriber })
.unwrap()
.then(res => {
if (res.status === 200) {
setSuccessMessage('Success, your account linked');
}
})
.catch((error) => console.log(error));
};发布于 2022-09-16 03:08:55
我想通了。显然,对于突变端点,您不需要使用lazyQuery()。默认情况下,突变查询返回类似于lazyQuery的响应,并且已经返回包含触发器的元组。
工作代码:(这将取代组件代码中的第一行,无需更改其他任何内容)
const [trigger, result, lastPromiseInfo] = useCreateLinkMutation();关于该主题的有用文档:https://redux-toolkit.js.org/rtk-query/usage/mutations
https://stackoverflow.com/questions/73739239
复制相似问题