首頁 >web前端 >前端問答 >react路由傳值有幾種方式

react路由傳值有幾種方式

WBOY
WBOY原創
2022-06-28 15:57:533693瀏覽

react路由傳值有三種方式:1、「props.params」方法,該方法可以傳遞一個或多個值,但是每個值的類型都是字串,沒法傳遞一個物件; 2、query方法,此方法類似表單中的get方法,傳遞參數為明文,但是刷新頁面參數會遺失;3、state方法,該方法取得參數時要用“this.props.match.params.name” ,並且刷新頁面參數也會遺失。

react路由傳值有幾種方式

本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。

react路由傳值有幾種方式

路由傳值的方法有三種

1.props.params(建議)

//设置路由
 <Router history={hashHistory}>
    <Route path=&#39;/user/:name&#39; component={UserPage}></Route>
 </Router>
import { Router,Route,Link,hashHistory} from &#39;react-router&#39;;
class App extends React.Component {
  render() {
    return (      
        <Link to="/user/sam">用户</Link>
        // 或者
        hashHistory.push("/user/sam");
    )
  }
}

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

export default class UserPage extends React.Component{
    constructor(props){
        super(props);
    }
    render(){
        return(<div>this.props.match.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;

#2.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;

#3.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;

特別提示:

1,取得參數時要用this.props.match.params.name

2,如果在子元件裡列印要記得傳this.props,如下:

class Todolist extends Component {
    render() {
       return (
           <DocumentTitle title="todolist">
           <div id="home-container">   
           <section>
              <TodolistList {...this.props}/> //不传的话this.props为空对象
           </section>                   
           </div>
           </DocumentTitle>
       );
    }
 }
export default Todolist;

【相關推薦:javascript影片教學web前端

#

以上是react路由傳值有幾種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn