zoukankan      html  css  js  c++  java
  • React Router v4 页面传值的三种方法

    传值方法

    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中页面传值的三种方法。

  • 相关阅读:
    找出一个字符串中最长重复次数的子字符串,并计算其重复次数
    p2p 打洞技术
    vmvare centos 7.0 root密码忘记后重置及总结
    Hyperledger Fabric 本地运行的简单示例
    基于docker的 Hyperledger Fabric 多机环境搭建(下)
    基于docker的 Hyperledger Fabric 多机环境搭建(上)
    docker疑难解答 -- 设置远程服务监听
    C#中internal关键字
    SqlParameter.Value = NULL 引发的数据库异常
    Razor语法大全
  • 原文地址:https://www.cnblogs.com/sunLemon/p/9020834.html
Copyright © 2011-2022 走看看