#
Matching UtilitiesRedux Toolkit exports several type-safe action matching utilities that you can leverage when checking for specific kinds of actions. These are primarily useful for the builder.addMatcher()
cases in createSlice
and createReducer
, as well as when writing custom middleware.
#
General PurposeisAllOf
- returns true when all conditions are metisAnyOf
- returns true when at least one of the conditions are met
createAsyncThunk
-specific matchers#
All these matchers can either be called with one or more thunks as arguments, in which case they will return a matcher function for that condition and thunks, or with one actions, in which case they will match for any thunk action with said condition.
isAsyncThunkAction
- accepts one or more action creators and returns true when all matchisPending
- accepts one or more action creators and returns true when all matchisFulfilled
- accepts one or more action creators and returns true when all matchisRejected
- accepts one or more action creators and returns true when all matchisRejectedWithValue
- accepts one or more action creators and returns true when all match
isAllOf
#
A higher-order function that accepts one or more of:
redux-toolkit
action creator functions such as the ones produced by:- type guard functions
- custom action creator functions that have a
.match
property that is a type guard
It will return a type guard function that returns true
if all of the provided functions match.
isAnyOf
#
Accepts the same inputs as isAllOf
and will return a type guard function that returns true
if at least one of the provided functions match.
isAsyncThunkAction
#
A higher-order function that returns a type guard function that may be used to check whether an action was created by createAsyncThunk
.
- TypeScript
- JavaScript
isPending
#
A higher-order function that returns a type guard function that may be used to check whether an action is a 'pending' action creator from the createAsyncThunk
promise lifecycle.
- TypeScript
- JavaScript
isFulfilled
#
A higher-order function that returns a type guard function that may be used to check whether an action is a 'fulfilled'' action creator from the createAsyncThunk
promise lifecycle.
- TypeScript
- JavaScript
isRejected
#
A higher-order function that returns a type guard function that may be used to check whether an action is a 'rejected' action creator from the createAsyncThunk
promise lifecycle.
- TypeScript
- JavaScript
isRejectedWithValue
#
A higher-order function that returns a type guard function that may be used to check whether an action is a 'rejected' action creator from the createAsyncThunk
promise lifecycle that was created by rejectWithValue
.
- TypeScript
- JavaScript
#
Using matchers to reduce code complexity, duplication and boilerplateWhen using the builder
pattern to construct a reducer, we add cases or matchers one at a time. However, by using isAnyOf
or isAllOf
,
we're able to easily use the same matcher for several cases in a type-safe manner.
First, let's examine an unnecessarily complex example:
- TypeScript
- JavaScript
In this scenario, we can use isAllOf
to simplify our code and reduce some of the boilerplate.
- TypeScript
- JavaScript
#
Using matchers as a TypeScript Type GuardThe function returned by isAllOf
and isAnyOf
can also be used as a TypeScript type guard in other contexts.
- TypeScript
- JavaScript
- TypeScript
- JavaScript