Jos*_*uez 6 redux redux-async-actions redux-toolkit
当fetchUserById()创建时,其输出响应被定义。
const fetchUserById = createAsyncThunk<{user: UserInterface, id: number}, number>(
'users/fetchByIdStatus',
async (userId) => {
const response = await userAPI.fetchById(userId)
return {user: response.data, id: userId}
}
);
const userSlice = createSlice({
name: "users",
initialState: [],
reducers: {},
extraReducers: (builder) => {
builder.addCase(fetchUserById.pending, (state, { payload }) => {
// how I configured custom value for this payload?
// I need to send the user id.
});
builder.addCase(fetchUserById.fulfilled, (state, {payload}) => {
/**
* @var {UserInterface} user
* @var {number} id;
*/
const {id, user} = payload;
state[id].loading = false;
state[id].user = user;
});
},
});
Run Code Online (Sandbox Code Playgroud)
但是,当操作处于“待处理”状态时,如何定义响应?
Mat*_*ski 13
您传入的参数createAsyncThunk将在 中可用action.meta.arg。因此,在您的示例中,您可以这样引用:
builder.addCase(fetchUserById.pending, (state, { meta }) => {
console.log(meta.arg); // meta.arg will have whatever value was passed as `userId`
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4785 次 |
| 最近记录: |