rtk-query

rtk-query, don't invalidateTags when we get error


I don't want to refetch REFETCH_TYPE_LIST if I get error from this method

dosomething: builder.mutation<void, number>({
  query: (id) => ({
    url: `api`,
    method: 'PATCH',
  }),
  invalidatesTags: (result) => (result ? ['REFETCH_TYPE'] : []),
}),

What I can think about is to just make this condition, maybe there is another better solution for this?


Solution

  • You can always write an abstraction that is more readable for yourself, e.g.:

    function invalidateOn<T>({success: T[] = [], error: T[] = []}) {
      return (result: unknown) => result ? success : error
    }
    
    
    dosomething: builder.mutation<void, number>({
      query: (id) => ({
        url: `api`,
        method: 'PATCH',
      }),
      invalidatesTags: invalidateOn({ success: ['REFETCH_TYPE' as const] }),
    }),
    dosomethingElse: builder.mutation<void, number>({
      query: (id) => ({
        url: `api`,
        method: 'PATCH',
      }),
      invalidatesTags: invalidateOn({ success: ['REFETCH_TYPE' as const], error: ['SOMETHING_ELSE' as const] }),
    }),