Yansen 2 years ago
parent
commit
edc1c762b4

+ 3
- 1
src/layouts/AuthLayout/components/Header/User.jsx View File

@@ -1,5 +1,6 @@
1 1
 import React, { useState, forwardRef, useRef, useImperativeHandle } from 'react';
2 2
 import { Avatar, Button, Dropdown, Menu, Form, Input, Modal } from 'antd';
3
+import { useModel } from '@/store'
3 4
 
4 5
 const ChangePassword = forwardRef((props, ref) => {
5 6
   const [visible, setVisible] = useState(false);
@@ -65,6 +66,7 @@ export default (props) => {
65 66
   ];
66 67
 
67 68
   const passRef = useRef();
69
+  const { user = {} } = useModel('user');
68 70
 
69 71
   const onClick = ({ key }) => {
70 72
     if (key === 'changePassword') {
@@ -78,7 +80,7 @@ export default (props) => {
78 80
     <Dropdown overlay={menu}>
79 81
       <div className="user-info">
80 82
         <Avatar src="https://joeschmoe.io/api/v1/random" />
81
-        <span className='font'>张延森</span>
83
+        <span className='font'>{user.name}</span>
82 84
         <ChangePassword ref={passRef} />
83 85
       </div>
84 86
     </Dropdown>

+ 10
- 4
src/layouts/AuthLayout/index.jsx View File

@@ -1,4 +1,4 @@
1
-import React from 'react';
1
+import React, { useEffect } from 'react';
2 2
 import { Layout, Spin } from 'antd';
3 3
 import { useModel } from '@/store'
4 4
 import RequireLogin from './components/RequireLogin';
@@ -13,12 +13,18 @@ import './style.less';
13 13
 const { Content } = Layout;
14 14
 
15 15
 export default (props) => {
16
-  const [user] = useModel();
16
+  const { user, getCurrent } = useModel('user');
17 17
   // const isReady = useReady(user)
18
-  const isReady = true
18
+  // const isReady = true
19
+
20
+  useEffect(() => {
21
+    if (!user) {
22
+      getCurrent()
23
+    }
24
+  }, []);
19 25
 
20 26
   return (
21
-    <Spin spinning={!isReady}>
27
+    <Spin spinning={!user} size="large">
22 28
       <RequireLogin>
23 29
         <div className='main-layout'>
24 30
           <Header />

+ 2
- 0
src/store/index.js View File

@@ -1,8 +1,10 @@
1 1
 import { createStore } from "@zjxpcyc/react-tiny-store";
2 2
 import useSystem from "./models/system";
3
+import useUser from "./models/user";
3 4
 
4 5
 const store = createStore({
5 6
   system: useSystem,
7
+  user: useUser,
6 8
 });
7 9
 
8 10
 export default store

+ 17
- 0
src/store/models/user.js View File

@@ -0,0 +1,17 @@
1
+import { useState } from "react";
2
+
3
+export default function useUser() {
4
+
5
+  const [user, setUser] = useState()
6
+
7
+  const getCurrent = () => {
8
+    // mock api
9
+    setUser({ id: 1, name: '管理员' })
10
+  }
11
+
12
+  return {
13
+    user,
14
+    getCurrent,
15
+  }
16
+
17
+}