Yansen пре 2 година
родитељ
комит
4d91406763

+ 3
- 6
src/components/page/index.jsx Прегледај датотеку

@@ -1,14 +1,11 @@
1
-import React from 'react';
1
+import React, { useEffect } from 'react';
2 2
 // import { PageHeader } from 'antd';
3
-// import useRoute from '@/routes/useRoute';
3
+import { useModel } from '@/store';
4 4
 import Container from './Container';
5 5
 
6 6
 export default (props) => {
7 7
   // const { children, ...headerProps } = props;
8
-
9
-  // const currentRoute = useRoute() || {};
10
-  // const { title } = currentRoute.meta || {};
11
-
8
+  
12 9
   return (
13 10
     <Container>
14 11
       {props.children}

+ 5
- 4
src/layouts/AuthLayout/components/Header/Title.jsx Прегледај датотеку

@@ -1,5 +1,5 @@
1 1
 import { Typography } from 'antd';
2
-import { useModel } from '@/store';
2
+import useRoute from '@/utils/hooks/useRoute';
3 3
 
4 4
 const { Title } = Typography;
5 5
 
@@ -14,12 +14,13 @@ const spanStyle = {
14 14
 }
15 15
 
16 16
 export default (props) => {
17
-  const { title } = useModel('system');
17
+  const route = useRoute();
18
+  const { title } = route && route.meta || {}
18 19
 
19 20
   return (
20 21
     <Title level={5} style={titleStyle}>
21
-      <span style={spanStyle}>&raquo;</span>
22
-      <span>{title}</span>    
22
+      { title && <span style={spanStyle}>&raquo;</span> }
23
+      { title && <span>{title}</span> }
23 24
     </Title>
24 25
   );
25 26
 }

+ 3
- 1
src/layouts/AuthLayout/components/HtmlTitle.jsx Прегледај датотеку

@@ -1,10 +1,12 @@
1 1
 
2 2
 import { Helmet } from "react-helmet";
3 3
 import { useModel } from '@/store';
4
+import useRoute from '@/utils/hooks/useRoute';
4 5
 
5 6
 export default (props) => {
6 7
   const { app } = useModel('system');
7
-  const { title } = useModel('route');
8
+  const route = useRoute();
9
+  const { title } = route && route.meta || {}
8 10
   
9 11
   const titleTemplate = `%s - ${app.fullName}`;
10 12
   const defaultTitle = app.fullName;

+ 0
- 3
src/layouts/AuthLayout/index.jsx Прегледај датотеку

@@ -13,7 +13,6 @@ import './style.less';
13 13
 
14 14
 export default (props) => {
15 15
   const { theme } = useModel('system');
16
-  const { setLocation } = useModel('route');
17 16
   const { user, getCurrent } = useModel('user');
18 17
 
19 18
   // const isReady = useReady(user)
@@ -27,8 +26,6 @@ export default (props) => {
27 26
     }
28 27
   }, []);
29 28
 
30
-  useEffect(() => setLocation(location), [location]);
31
-
32 29
   return (
33 30
     <Spin spinning={!user} size="large">
34 31
       <HtmlTitle />

+ 3
- 1
src/pages/sample/table/index.jsx Прегледај датотеку

@@ -1,8 +1,9 @@
1 1
 import { EllipsisOutlined, PlusOutlined } from '@ant-design/icons';
2 2
 import { ProTable, TableDropdown } from '@ant-design/pro-components';
3 3
 import { Button, Dropdown, Menu, Space, Tag } from 'antd';
4
-import { useRef } from 'react';
4
+import { useRef, useEffect } from 'react';
5 5
 import Page from '@/components/page';
6
+import { useModel } from '@/store';
6 7
 
7 8
 // import request from 'umi-request';
8 9
 const columns = [
@@ -123,6 +124,7 @@ const menu = (<Menu items={[
123 124
         },
124 125
     ]}/>);
125 126
 export default () => {
127
+
126 128
     const actionRef = useRef();
127 129
     return (<Page><ProTable columns={columns} actionRef={actionRef} cardBordered request={async (params = {}, sort, filter) => {
128 130
             console.log(sort, filter);

+ 0
- 2
src/store/index.js Прегледај датотеку

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

+ 0
- 31
src/store/models/route.js Прегледај датотеку

@@ -1,31 +0,0 @@
1
-import { useState, useRef, useEffect } from "react";
2
-import { getRouteArr } from '@/routes/menus';
3
-
4
-export default function useRoute() {
5
-  const routesRef = useRef();
6
-  const [location, setLocation] = useState({});
7
-  const [route, setRoute] = useState();
8
-  const [title, setTitle] = useState();
9
-
10
-  const { pathname, search } = location;
11
-
12
-  // 监控 route 改变
13
-  useEffect(() => {
14
-    // 获取当前路由
15
-    if (!routesRef.current || !routesRef.current.length) {
16
-      routesRef.current = getRouteArr();
17
-    }
18
-    const current = (routesRef.current || []).filter(x => x.path === pathname)[0];
19
-    setRoute(current);
20
-
21
-    //
22
-    const { title } = current && current.meta || {}
23
-    setTitle(title);
24
-  }, [pathname, search]);
25
-
26
-  return {
27
-    route,
28
-    title,
29
-    setLocation,
30
-  }
31
-}

+ 0
- 26
src/utils/hooks/useTitle.jsx Прегледај датотеку

@@ -1,26 +0,0 @@
1
-
2
-import { useEffect } from "react";
3
-import { useLocation } from "react-router-dom";
4
-import { useModel } from '@/store';
5
-import useRoute from './useRoute';
6
-
7
-export default function useTitle(newTitle) {
8
-  
9
-  const { app, title, setTitle} = useModel('system');
10
-  const currentRoute = useRoute();
11
-
12
-  const { pathname, search } = useLocation();
13
-  const titleTemplate = `%s - ${app.fullName}`
14
-  const pageTitle = currentRoute && currentRoute.meta ? currentRoute.meta.title : undefined;
15
-
16
-  // route change, reset title
17
-  useEffect(() => {
18
-    setTitle();
19
-  }, [pathname, search]);
20
-  
21
-  useEffect(() => {
22
-    setTitle(newTitle || pageTitle);
23
-  }, [newTitle, pageTitle]);
24
-
25
-  return [title, titleTemplate, app.fullName];
26
-}