React-Router路由配置
React路由使用react-router-dom
实现,它提供了BrowserRouter
、Route
、Link
等api,可以通过dom事件控制路由。
添加react-router-dom
库
yarn add react-router-dom
新建两个组件aaa.js
和bbb.js
import React, { Component } from 'react';
class AAA extends Component {
render() {
return (
<div>
<h1>AAA</h1>
</div>
)
}
}
export default AAA;
import React, { Component } from 'react';
class BBB extends Component {
render() {
return (
<div>
<h1>BBB</h1>
</div>
)
}
}
export default BBB;
将刚刚的两个组件,和react-router-dom
中的一些api导入首页app.js。这里用了BrowserRouter
,当然也可以用HashRouter
,差别就是地址栏有没有#
。比如用HashRouter
地址栏就是:http://localhost:3000/#/
import { BrowserRouter, Route, Link, Switch } from 'react-router-dom';
import AAA from './aaa';
import BBB from './bbb';
然后在Dom里用Link
来改变地址栏的url,注意Link
,Route
这些api都需要写在<BrowserRouter>
里
<BrowserRouter>
<div className="App">
<Button type="primary"><Link to='/aaa'>导航A</Link></Button>
<Button><Link to='/bbb'>导航B</Link></Button>
</div>
</BrowserRouter>
此时点击按钮可以看到地址栏是改变的,会变成http://localhost:3000/aaa
和http://localhost:3000/bbb
。
然后,在下方加上要通过路由切换的组件,当path为aaa
或者bbb
的时候分别加载AAA
和BBB
。
<BrowserRouter>
<div className="App">
<Button type="primary"><Link to='/aaa'>导航A</Link></Button>
<Button><Link to='/bbb'>导航B</Link></Button>
<Switch>
<Route path="/aaa" exact component={AAA} />
<Route path="/bbb" exact component={BBB} />
</Switch>
</div>
</BrowserRouter>
此时,在浏览器中点击两个按钮,就能看到下方可以切换两种组件。
完整代码:
import React from 'react';
import { Button, Row } from 'antd';
import { BrowserRouter, Route, Link, Switch } from 'react-router-dom';
import AAA from './aaa';
import BBB from './bbb';
class RouterTest extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<BrowserRouter>
<div className="App">
<Row type="flex" justify="center">
<Button type="primary"><Link to='/aaa'>导航A</Link></Button>
<Button><Link to='/bbb'>导航B</Link></Button>
</Row>
<Row type="flex" justify="center">
<Switch>
<Route path="/aaa" exact component={AAA} />
<Route path="/bbb" exact component={BBB} />
</Switch>
</Row>
</div>
</BrowserRouter>
);
}
}
export default RouterTest;
这是最简单的一个路由的实现。在实际的开发中,一般来讲我们会在上方或左侧简历导航栏,通过给导航栏元素添加<Link>
来加载页面剩下的内容。听起来有点像iframe?但是路由切换不会像iframe一样直接加载一个页面进来,只是通过路径匹配组件的切换。
当然,实际的开发中我们也不会这么不规范的直接把路由都写在首页里,一般会单写一个router.js
专门负责路由的控制。在后面的Dva
框架中,我们会看到Dva
把路由、公用组件、模型文件、服务文件等在创建工程时就帮我们分类好了,这样整个工程结构就非常清晰。
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/12/react-router-routing-configuration/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论