登录跳转以及登录相关store

This commit is contained in:
禺狨
2023-03-03 11:37:36 +08:00
parent 5a677f3302
commit bfda92dd3a
11 changed files with 174 additions and 51 deletions

7
src/store/hooks.ts Normal file
View File

@@ -0,0 +1,7 @@
import {
useSelector as useReduxSelector,
TypedUseSelectorHook,
} from "react-redux";
import { RootState } from "./store";
export const useSelector: TypedUseSelectorHook<RootState> = useReduxSelector;

View File

@@ -1,30 +1,7 @@
import { createStore, applyMiddleware } from "redux";
import userReducer from "./user/userReducer";
import thunk from "redux-thunk";
import { createStore } from "redux";
interface IAction {
type: string;
payload?: any;
}
interface IState {
isshow: boolean;
}
const reducer = (
preState: IState = {
isshow: false,
},
action: IAction
) => {
const { type } = action;
const newState = { ...preState };
switch (type) {
case "show":
newState.isshow = true;
return newState;
case "hidden":
newState.isshow = false;
return newState;
default:
return preState;
}
};
const store = createStore(reducer);
const store = createStore(userReducer, applyMiddleware(thunk));
export type RootState = ReturnType<typeof store.getState>;
export default store;

View File

@@ -0,0 +1,59 @@
import { message } from "antd";
export const IS_LOGIN = "IS_LOGIN";
export const LOGIN_OUT = "LOGIN_OUT";
export const SET_USER = "SET_USER";
export const SET_PERMISSSIONS = "SET_PERMISSSIONS";
interface IsLoginAction {
type: typeof IS_LOGIN;
}
interface LoginOutAction {
type: typeof LOGIN_OUT;
}
interface SetUserAction {
type: typeof SET_USER;
payload: any;
}
interface SetPermisssionsAction {
type: typeof SET_PERMISSSIONS;
payload: any;
}
export type UserLoginAction =
| IsLoginAction
| LoginOutAction
| SetUserAction
| SetPermisssionsAction;
export const IsLoginActionCreator = (): IsLoginAction => {
return {
type: IS_LOGIN,
};
};
export const LoginOutActionCreator = (): LoginOutAction => {
message.success("已退出登录");
return {
type: LOGIN_OUT,
};
};
export const SetUserActionCreator = (data: any): SetUserAction => {
return {
type: SET_USER,
payload: data,
};
};
export const SetPermisssionsActionCreator = (
data: any
): SetPermisssionsAction => {
return {
type: SET_PERMISSSIONS,
payload: data,
};
};

View File

@@ -0,0 +1,33 @@
import {
UserLoginAction,
IS_LOGIN,
LOGIN_OUT,
SET_USER,
SET_PERMISSSIONS,
} from "./userActions";
interface UserState {
permisssions: any[];
user: any[];
isLogin: boolean;
}
export const defaultState: UserState = {
isLogin: false,
permisssions: [],
user: [],
};
export default (state = defaultState, action: UserLoginAction) => {
switch (action.type) {
case IS_LOGIN:
return { ...state, isLogin: true };
case LOGIN_OUT:
return { ...state, isLogin: false, user: [], permisssions: [] };
case SET_USER:
return { ...state, user: action.payload };
case SET_PERMISSSIONS:
return { ...state, permisssions: action.payload };
default:
return state;
}
};