Yansen 2 år sedan
förälder
incheckning
4d91406763

+ 3
- 6
src/components/page/index.jsx Visa fil

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

+ 5
- 4
src/layouts/AuthLayout/components/Header/Title.jsx Visa fil

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

+ 3
- 1
src/layouts/AuthLayout/components/HtmlTitle.jsx Visa fil

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

+ 0
- 3
src/layouts/AuthLayout/index.jsx Visa fil

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

+ 3
- 1
src/pages/sample/table/index.jsx Visa fil

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

+ 0
- 2
src/store/index.js Visa fil

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

+ 0
- 31
src/store/models/route.js Visa fil

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 Visa fil

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
-}