createAsyncThunk

Redux Toolkit において、 thunk (Promise) の作成(pending), resolve, reject のいずれか、ないしすべてに対して reducer を紐付けたいときに利用できる仕組み

const thunkName = createAsyncThunk((payload, {}) => {
  return somePromise(payload)
})

// ...
export default createSlice({
  //...
  extraReducers: (builder) => {
    builder.addCase(thunkName.pending, (state, action) => {
      return calcNextState(state, action)
    })
  }
})

補足: .pending の action に対応して定義された reducer は、 promise 自身の実行の前に呼ばれる。 (下記 example の "Requesting a user by ID, with loading state, and only one request at a time" から読み取れる)

公式 example: https://redux-toolkit.js.org/api/createAsyncThunk#examples