You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
informatics/redux/user/slice.ts

39 lines
1.1 KiB

import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { fetchUser } from './asyncActions';
import { User, Status, UserSliceState } from './types';
const initialState: UserSliceState = {
user_items: [],
user_status: Status.LOADING, // loading | success | error
};
const userSlice = createSlice({
name: 'categories',
initialState,
reducers: {
setUser(user_status, action: PayloadAction<User[]>) {
user_status.user_items = action.payload;
},
},
extraReducers: (builder) => {
builder.addCase(fetchUser.pending, (user_status) => {
user_status.user_status = Status.LOADING;
user_status.user_items = [];
});
builder.addCase(fetchUser.fulfilled, (user_status, action) => {
user_status.user_status = Status.SUCCESS;
user_status.user_items = action.payload;
});
builder.addCase(fetchUser.rejected, (user_status) => {
user_status.user_status = Status.ERROR;
user_status.user_items = [];
});
},
});
export const { setUser } = userSlice.actions;
export default userSlice.reducer;