TestEShopDist/src/use/useUserInfo.ts
2022-12-02 18:59:29 +08:00

53 lines
1.5 KiB
TypeScript

import { useDispatch, useSelector } from 'react-redux'
import { CLEAR_SESSIONKEY, CLEAR_TOKEN, CLEAR_USERINFO, SET_ADMINUSERINFO, SET_SESSIONKEY, SET_SORTCODE, SET_TOKEN, SET_USERINFO } from '@/constants/userInfo'
import type { DataParam, SortCodeParam, UserAdminParam, UserParam } from '@/reducers/userInfo'
export default () => {
const userInfo = useSelector((state: DataParam) => state.userInfo) as DataParam
const dispatch = useDispatch()
const setToken = (token: string) => {
dispatch({ type: SET_TOKEN, data: { token } })
}
const setSessionKey = (sessionkey: string) => {
dispatch({ type: SET_SESSIONKEY, data: { session_key: sessionkey } })
}
const setUserInfo = (userInfo: UserParam) => {
dispatch({ type: SET_USERINFO, data: { userInfo } })
}
const setAdminUserInfo = (adminUserInfo: UserAdminParam) => {
dispatch({ type: SET_ADMINUSERINFO, data: { adminUserInfo } })
}
const setSortCode = (sortCode: SortCodeParam) => {
dispatch({ type: SET_SORTCODE, data: { sort_code: sortCode } })
}
const removeUserInfo = () => {
dispatch({ type: CLEAR_USERINFO })
}
const removeToken = () => {
dispatch({ type: CLEAR_TOKEN })
}
const removeSessionKey = () => {
dispatch({ type: CLEAR_SESSIONKEY })
}
return {
setToken,
setUserInfo,
setAdminUserInfo,
setSessionKey,
removeUserInfo,
removeToken,
removeSessionKey,
setSortCode,
userInfo, // 响应式数据返回
}
}