我试图在 redux-toolkit api 中的突变上调用 updateQueryData() 但不知何故它没有调用。当我尝试更新数据时,我看到 args 打印得很好,它只是在 updateQueryData 外部打印 args,但数据永远不会进入 updateQueryData
这是我的代码:
export const additionalInputsApi = createApi({
reducerPath: 'additionalInputsApi',
baseQuery: getBaseQuery(),
keepUnusedDataFor: 90,
endpoints: builder => ({
getAdditionalInputData: builder.query({
query: ({ scenarioType, sectorType, ccaVersion, companyId }) => ({
url: endpoints.GET_ADDITIONAL_INPUT,
params: {
ccaVersion,
scenarioType,
sectorType,
...(companyId && { companyId })
}
}),
}),
updateAdditionalInputs: builder.mutation({
query: data => utils.serviceLayerAPI.reduxPost(endpoints.SAVE_ADDITIONAL_INPUTS, data),
async onQueryStarted(args, { dispatch, queryFulfilled }) {
try {
const { data: updatedPost } = await queryFulfilled
dispatch(
additionalInputsApi.util.updateQueryData('getAdditionalInputData', args.key, (draft) => {
console.log('draft', draft); // Not printing anything
})
)
} catch { }
},
})
})
});
export const {
useGetAdditionalInputDataQuery,
useUpdateAdditionalInputsMutation,
} = additionalInputsApi;
这是我的商店
const sagaMiddleware = createSagaMiddleware();
const middlewares = [
sagaMiddleware,
additionalInputsApi.middleware
];
const store = configureStore({
reducer: {
additionalInputs: additionalInputsReducer,
[additionalInputsApi.reducerPath]: additionalInputsApi.reducer
},
middleware: getDefaultMiddleware => getDefaultMiddleware({
serializableCheck: false
}).concat(middlewares)
});
globalStore.RegisterStore('cca', store);
export default store;
export type RootState = ReturnType<typeof store.getState>;
有人可以看看我的代码并告诉我缺少什么吗?
如果它在调度时不打印任何内容,则您没有带有参数
getAdditionalInputData
的 args.key
端点的缓存条目。
这似乎是可能的,因为您的
getAdditionalInputData
端点采用 { scenarioType, sectorType, ccaVersion, companyId }
形式的参数,并且我认为 args.key
可能与该对象非常不同。