51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
|
|
// Типы данных
|
|
interface StorState {
|
|
menu: {
|
|
activePage: string;
|
|
activeProfilePage: string;
|
|
activeGroupPage: string;
|
|
};
|
|
}
|
|
|
|
// Инициализация состояния
|
|
const initialState: StorState = {
|
|
menu: {
|
|
activePage: '',
|
|
activeProfilePage: '',
|
|
activeGroupPage: '',
|
|
},
|
|
};
|
|
|
|
// Slice
|
|
const storeSlice = createSlice({
|
|
name: 'store',
|
|
initialState,
|
|
reducers: {
|
|
setMenuActivePage: (state, activePage: PayloadAction<string>) => {
|
|
state.menu.activePage = activePage.payload;
|
|
},
|
|
setMenuActiveProfilePage: (
|
|
state,
|
|
activeProfilePage: PayloadAction<string>,
|
|
) => {
|
|
state.menu.activeProfilePage = activeProfilePage.payload;
|
|
},
|
|
setMenuActiveGroupPage: (
|
|
state,
|
|
activeGroupPage: PayloadAction<string>,
|
|
) => {
|
|
state.menu.activeGroupPage = activeGroupPage.payload;
|
|
},
|
|
},
|
|
});
|
|
|
|
export const {
|
|
setMenuActivePage,
|
|
setMenuActiveProfilePage,
|
|
setMenuActiveGroupPage,
|
|
} = storeSlice.actions;
|
|
|
|
export const storeReducer = storeSlice.reducer;
|