提交 c8482076 作者: 翁进城

用户provider优化

上级 a704b261
...@@ -10,8 +10,8 @@ import api, { UserInfoResp } from "~/api"; ...@@ -10,8 +10,8 @@ import api, { UserInfoResp } from "~/api";
export const UserContext = createContext<{ export const UserContext = createContext<{
testLogin: () => void; testLogin: () => void;
logout: () => void; logout: () => void;
userInfo: UserInfoResp | null; userInfo: UserInfoResp | null | "";
setUserInfo: Dispatch<SetStateAction<UserInfoResp | null>>; setUserInfo: Dispatch<SetStateAction<UserInfoResp | null | "">>;
needLogin: Boolean; needLogin: Boolean;
setNeedLogin: Dispatch<SetStateAction<Boolean>>; setNeedLogin: Dispatch<SetStateAction<Boolean>>;
}>({ }>({
...@@ -27,7 +27,7 @@ type Props = { ...@@ -27,7 +27,7 @@ type Props = {
children: React.ReactNode; children: React.ReactNode;
}; };
const UserProvider = ({ children }: Props) => { const UserProvider = ({ children }: Props) => {
const [userInfo, setUserInfo] = useState<UserInfoResp | null>(null); const [userInfo, setUserInfo] = useState<UserInfoResp | null | ''>(null);
const [needLogin, setNeedLogin] = useState<Boolean>(false); //用于通知登录modal需要打开 const [needLogin, setNeedLogin] = useState<Boolean>(false); //用于通知登录modal需要打开
useEffect(() => { useEffect(() => {
...@@ -37,7 +37,9 @@ const UserProvider = ({ children }: Props) => { ...@@ -37,7 +37,9 @@ const UserProvider = ({ children }: Props) => {
}, []); }, []);
useEffect(() => { useEffect(() => {
localStorage.setItem("userInfo", JSON.stringify(userInfo || "")); if (userInfo !== null) {
localStorage.setItem("userInfo", JSON.stringify(userInfo || ""));
}
}, [userInfo]); }, [userInfo]);
//测试登录 //测试登录
...@@ -46,7 +48,7 @@ const UserProvider = ({ children }: Props) => { ...@@ -46,7 +48,7 @@ const UserProvider = ({ children }: Props) => {
if (res.code == "200") { if (res.code == "200") {
window.localStorage.setItem("token", res.result?.token || ""); window.localStorage.setItem("token", res.result?.token || "");
api.userInfo().then((res) => { api.userInfo().then((res) => {
setUserInfo(res.result || null); setUserInfo(res.result || '');
}); });
} }
}); });
...@@ -55,7 +57,7 @@ const UserProvider = ({ children }: Props) => { ...@@ -55,7 +57,7 @@ const UserProvider = ({ children }: Props) => {
//登出 //登出
function logout() { function logout() {
localStorage.setItem("token", ""); localStorage.setItem("token", "");
setUserInfo(null); setUserInfo('');
} }
return ( return (
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论