傳值方法 1、props.params 使用React router定義路由時,我們可以給指定一個path,然後指定通配符可以攜帶參數到指定的path: 跳轉UserPage頁面時,可以這樣寫: 在UserPage頁面中通過 this.props.params.name 獲取值。 上面的方法可以傳遞 ...
傳值方法
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中頁面傳值的三種方法。