react 中使用react-router-dom

    技术2022-07-11  92

    在react 中使用react-router-dom

    使用react-router-dom 进行路由的配置 首先进行安装react-router-dom

    npm install react-router-dom --save-dev //这里可以使用cnpm代替npm命令

    为了方便使用最好先搭建起一个项目可以使用react脚手架(如果不了解 可以参考这个文章脚手架搭建)

    1.搭建页面

    在页面中新建两个组件 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> ) } }

    2.路由适配

    把两个页面放到路由中新建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

    3.放入入口文件

    在我们搭建好的脚手架中有一个入口文件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

    通过函数跳转点击按钮进行跳转

    export default class Home extends React.Component { constructor(props) { super(props); } render() { return ( <div> <a href='#/detail'>去detail</a> <button onClick={() => this.props.history.push('detail')}>通过函数跳转</button> </div> ) } }

    通过路由传参

    使用url进行传递参数在router.js中进行修改 <Route exact path="/detail/:id" component={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

    Processed: 0.020, SQL: 12