react router路由传参

今天,我们要讨论的是react router中Link传值的三种表现形式。分别为通过通配符传参、query传参和state传参。

ps:进入正题前,先说明一下,以下的所有内容都是在react-router V4的版本下。

1.通配符传参

Route定义方式:

<Route path=‘/path/:name‘ component={Path}/>

Link组件:

<Link to="/path/通过通配符传参">通配符</Link>

参数获取:

this.props.match.params.name

注意这个match,许多博客活文章都是忽略了它,导致取不到值。这里的this.props.match.params.name === ‘通过通配符传参’。

优点:简单快捷,并且,在刷新页面的时候,参数不会丢失。

缺点:只能传字符串,并且,如果传的值太多的话,url会变得长而丑陋。

如果,你想传对象的话,可以用JSON.stringify(),想将其转为字符串,然后另外的页面接收后,用JSON.parse()转回去。这里简单提一下,不赘述。

2.query

Route定义方式:

<Route path=‘/query‘ component={Query}/>

Link组件:

var query = {
        pathname: ‘/query‘,
        query: ‘我是通过query传值 ‘
}

<Link to={query}>query</Link>

参数获取:

this.props.location.query

这里的this.props.location.query === ‘我是通过query传值‘

优点:优雅,可传对象

缺点:刷新页面,参数丢失

3.state

Route定义方式:

<Link to={state}>state</Link>

Link组件:

var state = {
        pathname: ‘/state‘,
        state: ‘我是通过state传值‘
    }
    <Route path=‘/state‘ component={State}/>
    

参数获取:

this.props.location.state

这里的this.props.location.state === ‘我是通过query传值‘

优点:优雅,可传对象

缺点:刷新页面,参数丢失

以下,是我github上demo的地址,各位可以亲自尝试一下

https://github.com/hanwolfxue/react-router-parameter

原文地址:https://www.cnblogs.com/yky-iris/p/9161907.html

时间: 2024-10-07 11:42:48

react router路由传参的相关文章

react做路由跳转,路由传参 &#340936;

原文: http://blog.gqylpy.com/gqy/496 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

vue-router和react-router-dom路由传参对照

React 1.动态路由传参 <Route exact path="/detail/:id" component={Detail}/> 接收 componentDidMount() { console.log(this.props.match.params); } 2.函数传参(push)加密的地址栏不可见 <button onClick={() => this.props.history.push({ pathname: '/detail', state: {

Vue路由传参及传参后刷新导致参数消失处理

参考:https://blog.csdn.net/qq_43103581/article/details/82260073(vue 路由传递参数,刷新页面后参数丢失) 项目功能需要,要从列表页跳转到第三方提供的URL上(这里第三方页面我是通过iframe引入在详情页,目的是点击返回时可以通过keepAlive让列表页不刷新,如果不通过iframe直接跳第三方链接,那么返回必然会重新拉取数据),一路百度,刚开始使用 this.$router.push({name:'list', params:{i

Vue路由传参的几种方式

原 Vue路由传参的几种方式 2018年07月28日 23:52:40 广积粮缓称王 阅读数 12613 前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效.传参方式可以划分为params传参和query传参,params传参又可以分为url中显示参数和不显示参数两种方式.具体区分和使用后续分析. 参考官网:https://router.vuejs.org/zh/guide/essentials/navigation.html params传参(url中显示参数)

vue路由传参问题

路由传参 带参的方式 第一种方式 通过 params 带参 刷新页面消失 this.$router.push({name:'name', params:{id: id}}) 这种方式传递过去的参数 刷新后容易消失 第二种方式 通过 query 带参   刷新页面不消失 this.$router.push({name:'name', query :{id: id}}) 原文地址:https://www.cnblogs.com/chz1905/p/11731177.html

vue路由传参query和params路由传参的区别?

相同点:router文件index.js 都是利用name属性. params传递时: params接收时利用this.$route.param进行接受: query路由传参: query接受利用this.$route.query 而展示上params路由传参像Ajax中post传参方式: query路由传参像get传参 原文地址:https://www.cnblogs.com/manban/p/12012567.html

vue路由传参

vue路由url 传参 :params 从客户列表页 通过路由跳转到客户详情页 查看客户详情时 需要将当前客户的id 和所属企业的id 当做参数传给后台. 在跳转时,将客户id 和企业id 通过路由传参 传给 客户详情页 客户列表: 客户详情 通过 this.$router.params 获取 参数 路由 router.js 路由传一个对象:query 有时我们需要传很多数据过去,为了避免大量拼接,我们可以传一个对象 通过this.$router.query接收对象参数 这里router 路由

前端Vue框架 04 路由:逻辑跳转、路由传参 项目组件的数据局部化处理data(){ return{} } 组件的声明周期 组件间通信 各种第三方插件(vuex,axios,element-ui,(jq+bs))

项目初始化 """ 1)根组件:App.vue <template> <div id="app"> <router-view /> </div> </template> 2)路由配置:router/index.js const routes = [ { path: '/', name: 'Home', component: Home } ]; 3)组件:views和components文件夹 i)

第十篇:Vue路由传参

路由传参 用于组件与组件之间通过路由传递数据 通过url正则传递数据 i)设置 路由: path: '/goods/detail/:pk' | '/goods/:pk/detail/:xyz' 请求: '/goods/detail/任意字符' | '/goods/任意字符/detail/任意字符' ii)如何传 <router-link :to="`/goods/detail/${pk}`"></router-link> this.$router.push(`/