使用react-router-dom 进行路由的配置 首先进行安装react-router-dom
npm install react-router-dom --save-dev //这里可以使用cnpm代替npm命令为了方便使用最好先搭建起一个项目可以使用react脚手架(如果不了解 可以参考这个文章脚手架搭建)
在页面中新建两个组件 detail.js
import React from 'react' export default class Detail extends React.Component { render() { return( <div> <p> 去home页面</p> </div> ) } }home.js
import React from 'react' export default class Home extends React.Component { constructor(props) { super(props) } render() { return ( <div> <p > 去detail页面</p> </div> ) } }把两个页面放到路由中新建router.js页面
import React from 'react' import Home from "./home" import Detail from './detail' import { HashRouter as Router, Route, Switch } from 'react-router-dom' function basicRoute() { return ( <Router> <Switch> <Route exact path='/' component={Home} /> <Route exact path='/detail' component={Detail} /> </Switch> </Router> ) } export default basicRoute在我们搭建好的脚手架中有一个入口文件index.js
import React from 'react'; import ReactDOM from 'react-dom'; import Router from './router/router' ReactDOM.render( <Router />, document.getElementById('root') );之后就可以yarn start启动项目看到页面了 http://localhost:3000/#/和http://localhost:3000/#/detail
在detail.js页面中可以获取链接中的ID
import React from 'react' export default class Detail extends React.Component { componentDidMount() { console.log(this.props.match.params, "======") } render() { return ( <div> <p> 去home页面</p> </div> ) } }隐式进行传递参数 router.js 恢复原样
<Route exact path='/detail' component={Detail} />home.js
import React from 'react' export default class Home extends React.Component { constructor(props) { super(props) } render() { return ( <div> <p> 去detail页面</p> <button onClick={() => this.props.history.push({ pathname: '/detail', state: { id: 6 } })}>通过函数跳转</button> </div> ) } }//新增加button按钮事件点击按钮跳转到detail页面 通过this.props.history.location.state 可以拿到state里面的ID
import React from 'react' export default class Detail extends React.Component { componentDidMount() { console.log(this.props.history.location.state, "======") } render() { return ( <div> <p> 去home页面</p> </div> ) } }兄弟组件路由隐式传参 this.props.history.location.state 获取路由上的参数 this.props.match.params