首页 > 其他 > 详细

React开发中使用react-router-dom路由最新版本V5.1.2(二)路由跳转及传参

时间:2020-05-09 22:37:41      阅读:255      评论:0      收藏:0      [点我收藏+]
NavLink可以控制菜单高亮
navlink加上activeClassName属性可以给点击跳转的菜单加上个class,然后移除其他link上的class,然后我们可以写个自定义的样式
import {NavLink} from "react-router-dom"
<li><NavLink to="/home" activeClassName="selected">Home</NavLink></li>
<li><NavLink to="/about" activeClassName="selected">About</NavLink></li>
<li><NavLink to="/dashboard" activeClassName="selected">Dashboard</NavLink></li>
div ul {
  display: flex;
  justify-content: flex-start;
}
div ul li {
  list-style: none;
  margin-right: 10px;
}
.selected {
  color: green;
}

  技术分享图片

 也可以直接写内联样式

<NavLink
  to="/Home"
  activeStyle={{
    fontWeight: "bold",
    color: "green"
  }}
>
  Home
</NavLink>
参数传递
1.url传递
在link标签的to属性后面加上/12345
<li><NavLink to="/about/12345" activeClassName="selected">About</NavLink></li>
router里加上key
<Route strict path="/about/:id" component={About}/>
然后在跳转的页面里取,下面是About.jsx文件
import React from ‘react‘;
export default class About extends React.Component {
  render() {
    return (
      <div>
        Here is About!
        <div>
          传过来的值:{this.props.match.params.id}
        </div>
      </div>
    )
  }
}
技术分享图片

 url里还可以传多个参数,但是要继续用斜杠/拼在后面

<NavLink to="/about/12345/中文可以吗" activeClassName="selected">About</NavLink>

<Route strict path="/about/:id/:text" component={About}/>

  然后在文件里取,取值属性:this.props.match.params

import React from ‘react‘;
export default class About extends React.Component {
  render() {
    return (
      <div>
        Here is About!
        <div>
          传过来的值:{this.props.match.params.id}
          <br/>
          中文:{this.props.match.params.text}
        </div>
      </div>
    )
  }
}

技术分享图片

 

 

 url还可以用问号?拼接参数,下面是Home.jsx文件

取值用this.props.location.search,这也就和js里window.location.search差不多

import React from ‘react‘;
export default class Home extends React.Component {
  render() {
    return (
      <div>
        Here is Home!
        <div>
          问号值:{this.props.location.search}
        </div>
      </div>
    )
  }
}

技术分享图片

 

 

 2.对象数据属性传递

 在link里to

<NavLink to={{
                  pathname: "/dashboard",
                  datas: {name: ‘jack‘}
                }} activeClassName="selected">Dashboard</NavLink>
在dashboard.jsx里打印一下props
import React from ‘react‘;
export default class Dashboard extends React.Component {
  render() {
    console.log(‘props-->‘, this.props);
    return (
      <div>
        Here is Dashboard!
        <div>
          你的名字:{this.props.location.datas.name}
        </div>
      </div>
    )
  }
}
技术分享图片

3.js来控制路由跳转

下面我们在home的页面写一个button跳转到dashbord,并动态传递对象数据

Home.jsx文件

import React from ‘react‘;
export default class Home extends React.Component {
  goDash=()=>{
    this.props.history.push({pathname:‘/dashboard‘,datas:{name:‘jack‘}});
  }
  render() {
    return (
      <div>
        Here is Home!
        <div>
          <button onClick={ this.goDash }>去dashboard</button>
        </div>
      </div>
    )
  }
}

  技术分享图片

React开发中使用react-router-dom路由最新版本V5.1.2(二)路由跳转及传参

原文:https://www.cnblogs.com/bobo1/p/12853138.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!