React-Router实战:路由传参(正则表达式)
首先我们先做个路由普通传参的例子。
一、准备工作
1、目录结构
| - index.js | - components | - App => App.js | - Home => Home.js | - About => About.js | - News => News.js
2、源码
./index.js
import React from react; import ReactDOM from react-dom; import App from ./components/App/App; ReactDOM.render(<App />, document.getElementById(root));
./components/App/App.js
import React , { Component } from react; import { BrowserRouter as Router, Route, NavLink } from react-router-dom; import Home from ../Home/Home; import About from ../About/About; import News from ../News/News; let name = bty, currentNew = Today is good!; class App extends Component { render() { return ( <Router> <div> <li><NavLink to="/">Home</NavLink></li> <li><NavLink to={`/about/${name}`}>About</NavLink></li> <li><NavLink to={`/news/${currentNew}`}>News</NavLink> </li> <br/> <Route path="/" exact component={Home} /> <Route path="/about/:name" component={About} /> <Route path="/news/:currentNew" component={News} /> </div> </Router> ); } } export default App;
./components/About/About.js
import React, { Component } from react; export default class About extends Component { render() { return ( <div> <h2>About</h2> { this.props.match.params.name } </div> ); } }
./components/New/New.js
import React, { Component } from react; export default class News extends Component { render() { return ( <div> <h2>News</h2> { this.props.match.params.currentNew } </div> ); } }
3、show
(1)初始页面 (2)点击About后,展示: (3)点击News后,展示:
二、路由传参 - 正则表达式
由于应用很灵活,这里就列举几种使用情况
1、? 参数可选
(1)使用
<Route path="/about/:name?" component={About} />
以下两种情况都符合跳转条件:
-
/about /about/name
(2)将上面例子改为: 注:如果不加“?” ,则点对应 不传参数的NavLink,不会跳转到About界面
2、限定参数必须是数字
(1)使用
<Route path="/about/:name(d+)" component={About} />
-
匹配的路由: /about/10083 不匹配的路由: /about/bty
(2)将上面例子改为:
3、限定参数必须是3位数字
(1)使用
<Route path="/about/:name(d{3})" component={About} />
-
匹配的路由: /about/100 不匹配的路由: /about/10083 不匹配的路由: /about/bty
上一篇:
IDEA上Java项目控制台中文乱码