首頁 > web前端 > js教程 > 主體

react中頁面如何傳值

coldplay.xixi
發布: 2020-11-19 18:04:59
原創
4651 人瀏覽過

react中頁面傳值的方法:1、使用【props.params】方法,程式碼為【】;2、使用query方式使用很簡單,類似表單中的get方法,傳遞參數為明文。

react中頁面如何傳值

react中頁面傳值的方法:

一、props.params

官方範例使用React router定義路由時,我們可以給指定一個path,然後指定通配符可以攜帶參數到指定的path:

先定義路由到UserPage頁面:

import { Router,Route,hashHistory} from 'react-router';
class App extends React.Component {
  render() {
    return (
        <Router history={hashHistory}>
            <Route path=&#39;/user/:name&#39; component={UserPage}></Route>
        </Router>
    )
  }
}
登入後複製

上面指定參數一個參數name

使用:

import {Link,hashHistory} from &#39;react-router&#39;;
登入後複製

1、Link元件實現跳轉:

<Link to="/user/sam">用户</Link>
登入後複製

2、history跳轉:

hashHistory.push("/user/sam");
登入後複製

當頁面跳到UserPage頁面之後,取出傳過來的值:

export default class UserPage extends React.Component{
    constructor(props){
        super(props);
    }
    render(){
        return(<div>this.props.params.name</div>)
    }
}
登入後複製

上面的方法可以傳遞一個或多個值,但是每個值的類型都是字符串,沒法傳遞一個物件,如果傳遞的話可以將json物件轉換為字串,然後傳遞過去,傳遞過去之後再將json字串轉換為物件將資料取出來

如:定義路由:

<Route path=&#39;/user/:data&#39; component={UserPage}></Route>
登入後複製

使用:

var data = {id:3,name:sam,age:36};
data = JSON.stringify(data);
var path = `/user/${data}`;
<Link to={path}>用户</Link>
hashHistory.push(path);
登入後複製

取得資料:

var data = JSON.parse(this.props.params.data);
var {id,name,age} = data;
登入後複製

透過這種方式跳到UserPage頁面時只能透過傳遞字串來傳遞參數,那麼是否有其他方法來優雅地直接傳遞物件而不僅僅是字串呢?

二、query

query方式使用很簡單,類似表單中的get方法,傳遞參數為明文:

#先定義路由:

<Route path=&#39;/user&#39; component={UserPage}></Route>
登入後複製
登入後複製

使用:

var data = {id:3,name:sam,age:36};
var path = {
  pathname:&#39;/user&#39;,
  query:data,
}
<Link to={path}>用户</Link>
hashHistory.push(path);
登入後複製

取得資料:

var data = this.props.location.query;
var {id,name,age} = data;
登入後複製

query方式可以傳遞任意類型的值,但是頁面的URL也是由query的值拼接的,URL很長,那麼有沒有辦法類似表單post方式傳遞資料使得傳遞的資料不以明文傳輸呢?

三、state

state方式類似post方式,使用方式和query類似,

先定義路由:

<Route path=&#39;/user&#39; component={UserPage}></Route>
登入後複製
登入後複製

使用:

var data = {id:3,name:sam,age:36};
var path = {
  pathname:&#39;/user&#39;,
  state:data,
}
<Link to={path}>用户</Link>
hashHistory.push(path);
登入後複製

取得數據:

var data = this.props.location.state;
var {id,name,age} = data;
登入後複製

state方式依然可以傳遞任意類型的數據,而且可以不以明文方式傳輸。

可以在實作後比較網址列的URL來觀察三種傳值方式URL的差異

相關學習推薦:# javascript學習教學

以上是react中頁面如何傳值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!