无法触发redux-toolkit中的updateQueryData

问题描述 投票:0回答:1

我试图在 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>;

有人可以看看我的代码并告诉我缺少什么吗?

reactjs redux-toolkit redux-thunk
1个回答
0
投票

如果它在调度时不打印任何内容,则您没有带有参数

getAdditionalInputData
args.key
端点的缓存条目。

这似乎是可能的,因为您的

getAdditionalInputData
端点采用
{ scenarioType, sectorType, ccaVersion, companyId }
形式的参数,并且我认为
args.key
可能与该对象非常不同。

© www.soinside.com 2019 - 2024. All rights reserved.