一.props.params
1
class App extends React.Component {
render() {
return (
)
}
}
上面指定参数一个参数name
使用:
import {Link} from ‘react-router’;
1.Link组件实现跳转:
this.props.history.push(“/user/haha”);
当页面跳转到UserPage页面之后,取出传过来的值:
export default class UserPage extends React.Component{
constructor(props){
super(props);
}
render(){
return(
)
}
}
上面的方法可以传递一个或多个值,但是每个值的类型都是字符串,没法传递一个对象,如果传递的话可以将json对象转换为字符串,然后传递过去,传递过去之后再将json字符串转换为对象将数据取出来
如:定义路由:
使用:
var data = {id:3,name:sam,age:36};
data = JSON.stringify(data);
var path = /user/${data}
;
1.用户
2.this.props.history.push(path);
获取数据:
var data = JSON.parse(this.props.params.id);
var {id,name,age} = data;
通过这种方式跳转到UserPage页面时只能通过传递字符串来传递参数,那么是否有其他方法来优雅地直接传递对象而不仅仅是字符串呢?
二.query And state
query 和 state 方式都是不以明文在url 上进行传递 可以传递对象但是 经过刷新之后不能获得之前传递的参数值
使用:
var data = {id:3,name:sam,age:36};
var path = {
pathname:’/user’,
query:data,
}
1.用户
2.this.props.history.push(path);
获取数据:
var data = this.props.location.query;
var {id,name,age} = data;
state
使用:
var data = {id:3,name:sam,age:36};
var path = {
pathname:’/user’,
state:data,
}
1.用户
2.this.props.history.push(path);
获取数据:
var data = this.props.location.state;
var {id,name,age} = data;