react中配置路由


一個路由就是一個通道,頁面之間的跳轉其實就是路由的切換,所以每個應用的路由配置是必須的,淺談react中怎么配置路由

首先你要在src文件夾下新建一個router的文件下,在router文件下新建一個index.js(我用的是TS,所以是index.tsx)

然后在index.jsx里這樣去配置

 1 import React, { ReactNode, lazy } from "react";
 2 const Test = lazy(() => import("../pages/Test"))
 3 const Detail = lazy(() => import("../pages/Detail"))
 4 //Test 和 Detail分別對應你的組件
 5 export interface IRoute {
 6     exact?: boolean
 7     path: string
 8     title: string
 9     icon?: ReactNode
10     component?: ReactNode
11     children?: IRoute[]
12 }
13 
14 export const routes: IRoute[] = [
15     {
16         path: "/test",
17         title: "測試一",
18         component: <Test />
19     },
20     {
21         path: "/detail",
22         title: "詳情",
23         component: <Detail />
24     }
25 ]

然后再在scr文件下新建一個components文件下,在此文件夾下新建一個View.jsx的文件,里面這樣配置

 1 import React, { Component, Suspense } from 'react'
 2 import { HashRouter as Router, Switch, Route } from 'react-router-dom'
 3 import { routes } from '../router'
 4 export default class View extends Component {
 5     render() {
 6         return (
 7             <>
 8                 <Suspense fallback={<>loading ...</>}>
 9                     <Router>
10                         {routes.map(r => (<Switch key={r.path}>
11                             <Route path={r.path}>
12                                 {r.component}
13                             </Route>
14                         </Switch>))}
15                     </Router>
16                 </Suspense>
17 
18             </>
19         )
20     }
21 }

然后你就可以試着改變url地址欄來改變頁面了,注意;hash模式下,你的url前必須加#/

用history來跳轉頁面時必須做好配置,部分代碼如下:

 

1 import { Link, withRouter, RouteComponentProps } from 'react-router-dom';
2 
3 
4 class Test extends Component{
5 
6 
7 }
8 
9 export default withRouter(Test)

 

這樣才可以使用this.props.history.push等等api

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM