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中頁面傳值的三種方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM