【发布时间】:2023-01-25 02:03:26
【问题描述】:
我有一个 RTK 查询,在删除突变后没有刷新它的核心内容。谁能解释为什么?我不清楚问题出在哪里,因为在任何时候都没有提出刷新请求。
代码看起来不错,它与我在另一个可用的 API 中使用的代码几乎相同。在第二个 API 上,我传递了相同的数据(项目列表),并且在删除后刷新良好;这是代码:
:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { Auth, API, Storage } from 'aws-amplify';
// Define a service using a base URL and expected endpoints
export const researchApi = createApi({
reducerPath: 'researchApi',
tagTypes: ['Research'],
baseQuery: fetchBaseQuery({
baseUrl: process.env.NEXT_PUBLIC_API_RESEARCH,
prepareHeaders: async (headers, { getState }) => {
const token = (await Auth.currentSession()).getIdToken().getJwtToken();
headers.set('Authorization', `${token}`);
headers.set('Content-Type', 'application/json');
return headers;
}
}),
endpoints: (builder) => ({
getResearch: builder.query({
query: () => `research`,
providesTags: ['Research']
}),
getResults: builder.query({
query: (id) => `results?searchid=${id}`,
}),
addResearch: builder.mutation({
query(keywords) {
const data = {
keywords: keywords
}
return {
url: `research`,
method: 'POST',
body: data
}
},
invalidatesTags: ['Research']
}),
deleteResults: builder.mutation({
query(results) {
// send array
let sanitized;
sanitized = results.filter(item => item);
const data = {
items: sanitized
}
//console.log('data: ', data);
return {
url: `removeresult`,
method: 'DELETE',
body: data
}
},
invalidatesTags: ['Research']
}),
}),
})
// Export hooks for usage in functional components, which are
// auto-generated based on the defined endpoints
export const { useGetResearchQuery, useGetResultsQuery, useAddResearchMutation, useDeleteResultsMutation } = researchApi
我这样调用查询:
const router = useRouter()
const { kwd } = router.query
const { data, error, isError, isLoading } = useGetResultsQuery(kwd);
if(isLoading) {
return (
<>
<Spinner animation="border" size="sm" role="status" />{' '} Please wait while Loading...
</>
)
}
任何想法都会非常有帮助,因为我完全迷失了这个......
【问题讨论】:
-
你如何识别如果它令人耳目一新?您是否在 devtools 的“网络”窗格中寻找(但没有看到)发生的请求?
-
另外:是否设置了中间件?
-
一旦删除发生,我应该在 API 上收到 GET 请求,但我没有在控制台上收到
标签: reactjs redux react-redux rtk-query