redux-toolkit icon indicating copy to clipboard operation
redux-toolkit copied to clipboard

Feat/4644 tags invalidation improvements

Open pierroberto opened this issue 4 months ago • 3 comments

Description

Closes #4644

The following public rtk query APIs now supports undefined or null tags:

  • api.util.invalidateTags
  • api.util.selectInvalidatedBy
  • mutationDefinition.invalidateTags

Example nullish invalidate tags in mutation definition

const api = createApi({
  baseQuery,
  tagTypes: ['Banana'],
  endpoints: (build) => ({
    getBanana: build.query<unknown, number>({
      query(id) {
        return { url: `banana/${id}` }
      },
      providesTags: ['Banana'],
    }),
    getBananas: build.query<unknown, void>({
      query() {
        return { url: 'bananas' }
      },
      providesTags: ['Banana'],
    }),
    invalidateFruit: build.mutation({
      query: (fruit?: 'Banana'  | null) => ({ url: `invalidate/fruit/${fruit || ''}` }),
      invalidatesTags(result, error, arg) {
        return [arg] // arg now can also be undefined or null
      }
    })
  }),
})

api.utils.invalidateTags

store.dispatch(api.util.invalidateTags(["Bread", params?.id]))

api.util.selectInvalidatedBy

store.dispatch(api.util.selectInvalidatedBy(["Bread", params?.id]))

Notes

Paired with @FaberVitale

pierroberto avatar Oct 19 '24 15:10 pierroberto