传值方法

1、props.params

使用React router定义路由时,我们可以给指定一个path,然后指定通配符可以携带参数到指定的path:

<Route path='/user/:name' component={UserPage}></Route>

跳转UserPage页面时,可以这样写:

//link方法
<Link to="/user/sam">用户</Link>
//push方法
this.props.history.push("/user/sam");

在UserPage页面中通过 this.props.params.name 获取值。

上面的方法可以传递一个或多个值,但是每个值的类型都是字符串,没法传递一个对象,如果要传的话可以将json对象转换为字符串,传递过去之后再将json字符串转换为对象。

 let data = {id:3,name:sam,age:36};
data = JSON.stringify(data);
let path = '/user/${data}'; //在页面中获取值时
let data = JSON.parse(this.props.params.data);

2、query

query方式可以传递任意类型的值,但是页面的URL也是由query的值拼接的,URL很长且是明文传输。

    //定义路由
<Route path='/user' component={UserPage}></Route> //数据定义
let data = {id:3,name:sam,age:36};
let path = {
pathname: '/user',
query: data,
} //页面跳转
<Link to={path}>用户</Link>
this.props.history.push(path); //页面取值
let data = this.props.location.query;
let {id,name,age} = data;

3、state

state方式类似于post,依然可以传递任意类型的数据,而且可以不以明文方式传输。

    //定义路由
<Route path='/user' component={UserPage}></Route> //数据定义
let data = {id:3,name:sam,age:36};
let path = {
pathname: '/user',
state: data,
} //页面跳转
<Link to={path}>用户</Link>
this.props.history.push(path); //页面取值
let data = this.props.location.state;
let {id,name,age} = data;

以上就是react router中页面传值的三种方法。

React Router v4 页面传值的三种方法的更多相关文章

  1. React Router页面传值的三种方法

    文章地址:https://blog.csdn.net/qq_23158083/article/details/68488831

  2. javascript静态页面传值的三种方法分享

    一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 复制代码 代码如下: <input type="text" ...

  3. uni-app开发经验分享一: 多页面传值的三种解决方法

    开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家: 问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新 问题难点: 首先我们 ...

  4. MVC控制器向View视图传值的三种方法

    首先创建一个MVC的项目,其中需要一个控制器(TestController),三个视图(index,edit,detail) 1.项目结构如下:

  5. YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法

    上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...

  6. 在React中跨组件分发状态的三种方法

    在React中跨组件分发状态的三种方法 当我问自己第一百次时,我正在研究一个典型的CRUD屏幕:"我应该将状态保留在这个组件中还是将其移动到父组件?". 如果需要对子组件的状态进行 ...

  7. struts2前后台传值的三种方法

    原文地址: http://laokaddk.blog.51cto.com/368606/1340816 多的不说,直接上代码; struts.xml代码: <?xml version=" ...

  8. javascript HTML静态页面传值的四种方法

    一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 代码如下: <input type="text" name= ...

  9. ionic 跨页面传值的几种方法

    1.使用AngularJS自带的$cacheFactory服务 $cacheFactory 从字面直译即为缓存工厂,可以用它来生成缓存对象,缓存对象以key-value的方式进行数据的存储,在整个应用 ...

随机推荐

  1. gradlew和gradle的区别

    概念理解 gradlew就是对gradle的包装和配置,gradlew是gradle Wrapper,Wrapper的意思就是包装. 因为不是每个人的电脑中都安装了gradle,也不一定安装的版本是要 ...

  2. java常用问题排查工具

    一:jstack找到最耗cpu的线程并定位代码 1.ps -ef|grep java 或者 jps -l 得到进程pid 2.找到该进程内最耗cpu的线程,我一般使用: top -Hp pid 3.c ...

  3. HashMap线程不安全的体现

    前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密. 1.jdk1.7中的HashMap 在jdk1.8中对HashM ...

  4. java面试准备之面向对象

    面向对象 下面列出了面向对象软件开发的优点: (1) 代码开发模块化,更易维护和修改. (2) 代码复用. (3) 增强代码的可靠性和灵活性. (4) 增加代码的可理解性. 面向对象编程有很多重要的特 ...

  5. iOS开发基础篇-transform属性

    一. transform 属性 在OC中,通过 transform 属性可以修改对象的平移.缩放比例和旋转角度. 1)创建“基于控件初始位置”的形变  CGAffineTransformMakeRot ...

  6. (hdu) 4857 逃生 (拓扑排序+优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄 ...

  7. mpvue-Vant Weapp踩坑记

    微信开发者工具:开发.调试和模拟运行微信小程序的最核心的工具了,所以必须安装 # 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 mpvue- ...

  8. [转帖]Go中的下划线

    Go中的下划线 https://blog.csdn.net/wanglei9876/article/details/50475864 下划线的作用: 在import 时 是仅引入 init 函数 在正 ...

  9. vue报错如log,如果其他项目运行没问题,很有可能是代码错误 加externals报错

  10. HP 1010、 1020、 1022 、M1005激光打印机内部无卡纸,但机器仍提示卡纸?

    HP 1010.1018.1020.1022.M1005激光打印机,硒鼓原装编号:Q2612A  1800页 ( A4纸,5%覆盖率).是办公桌面小型打印机中主流产品,故障率极小. 现有一台HP 10 ...