一、react-router
3-1 安装依赖yarn add react-router-dom3-1 配置路由App.jsimport React, { Component } from 'react';import { BrowserRouter as Router, Switch, Route, Link} from "react-router-dom";import Home from './views/Home'import About from './views/About'class App extends Component { render() { return ( <div> <Router> <ul> <li><Link to="/">首页</Link></li> <li><Link to="/about">About</Link></li> </ul> {/* exact路由的严格匹配,只有路径为/才会加载对应的路由 */} <Switch> <Route exact path="/" component={Home}></Route> <Route path="/about" component={About}></Route> <Route path="/about/fs" component={About}></Route> </Switch> </Router> </div> ); }}export default App;
二、路由跳转和get传值
2-1 Link
class Home extends Component { constructor(props){ super(props); this.state = { id:1001 } } render() { return ( <div> 主页 <Link to={`/detail?id=${this.state.id}`}> <Button>detail</Button> </Link> </div> ); }}
2-2 事件跳转 this.props.history.push()
<Button onClick={this.handleToggle}>detail</Button>handleToggle=()=>{ this.props.history.push(`/detail?id=${this.state.id}`)}
2-3 query-string解析get传值
//Detail.js//this.props.location.search//安装依赖 yarn add query-stringimport queryString from 'query-string'class Detail extends Component { ... componentDidMount() { var url = this.props.location.search; console.log(queryString.parse(url)) }}export default Detail;
三、动态路由
5-1 配置动态路由<Route path="/detail/:id" component={Detail}></Route>5-2 跳转<Button onClick={this.handleToggle}>detail</Button>handleToggle=()=>{ this.props.history.push(`/detail/${this.state.id}`)}5-3 详情页接收 this.props.match.paramscomponentDidMount() { console.log(this.props.match.params)}