createSlice将promise函数返回的值存储在redux工具箱中



我有一个从服务中使用的函数,它在调用时返回一个promise对象,在实现时我需要提取一个值。

const isAdmin = some.service.isUserAuthorized({
group: "group_id",
}).then((response) => response.isAuthorized)
.then((value) => {
return value;
});
const initialState = {user:"some_name",isAnAdmin:isAdmin }
// it provides promise object as the result, but i need the value of the promise object once completed
export const userDetailsSlice = createSlice({
name: 'userDetails',
initialState ,
reducers: {
},
})
export default userDetailsSlice.reducer

您可以将createAsyncThunk用于异步方法,并使用切片中的extraReducer读取结果值。看看这个答案:

const checkUserIsAuthorized = createAsyncThunk(
'users/isAuthorized',
async (userId, thunkAPI) => {
const { isAuthorized } = await some.service.isUserAuthorized({
group: "group_id",
})
return isAuthorized
}
)
export const userDetailsSlice = createSlice({
name: 'userDetails',
initialState ,
extraReducers: (builder) => {
// Add reducers for additional action types here, and handle loading state as needed
builder.addCase(checkUserIsAuthorized.fulfilled, (state, action) => {
// Add value to the state array
state.isAnAdmin.push(action.payload)
})
},
})

最新更新