#redux #react-redux #redux-toolkit
#redux #реагировать-redux #redux-toolkit
Вопрос:
Привет, товарищи программисты,
В последнее время мне было весело изучать react-redux, но у меня есть один вопрос, который меня беспокоит.
Я понимаю, что при его использовании createAsyncThunk
автоматически генерируются константы типа действия. (ожидание, выполнение и отклонение)
Что я хотел знать, так это то, что есть ли какой-либо способ вручную отправлять тип действия во createAsyncthunk
время, чтобы мы могли иметь больше гибкости в нашем коде.
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'
import { userAPI } from './userAPI'
// First, create the thunk
const fetchUserById = createAsyncThunk(
'users/fetchByIdStatus',
async (userId, thunkAPI) => {
const response = await userAPI.fetchById(userId).then(
...
dispatch(fulfilled) // is this possible ?
).catch(
dispatch(rejected) // is this possible ?
)
return response.data
}
)
// Then, handle actions in your reducers:
const usersSlice = createSlice({
name: 'users',
...,
extraReducers: {
// Add reducers for additional action types here, and handle loading state as needed
[fetchUserById.fulfilled]: (state, action) => {
// Add user to the state array
state.entities.push(action.payload)
}
}
})
// Later, dispatch the thunk as needed in the app
dispatch(fetchUserById(123))
Ответ №1:
Суть createAsyncThunk
в том, что он генерирует эти типы действий, _ и отправляет их для вас автоматически. Вам определенно не нужно dispatch(fulfilled())
самому, потому что это то, что createAsyncThunk
вам нужно — вам просто нужно вернуть обещание, которое либо разрешает, либо отклоняет, и оно отправляет fulfilled/rejected
типы действий на основе этого.
У вас есть доступ к thunkAPI.dispatch
, так что вы можете отправлять другие действия, если это необходимо, но вам не нужно беспокоиться о самих fulfilled/rejected
действиях.