我试图通过React Route(重定向到)重定向到路径时发送道具,但组件(SideBar)没有收到任何道具。我应该如何发送道具以及如何在组件中接收道具?我想从现状发送道具。
ParentComponent(WelcomeScreen.tsx)
render(){
return (
this.state.idUser != -1 ? <Redirect to={{
pathname: '/Activities',
state: { referrer: this.state.idUser }
}}/> :
<div>
{this.renderHeader()}
<div className='screenUser'>
{this.renderPanelUpButtons()}
{this.renderWelcomeMenu()}
</div>
</div>
);
Activities.tsx
export interface ActivitiesProps {
idUser: number;
}
interface ActivitiesState {
message: string;
activitiesFirstPart: IActivity[];
activitiesSecondPart: IActivity[];
}
componentWillReceiveProps(newprops : ActivitiesProps){
if(newprops!== this.props){
this.props = newprops;
}
}
此处组件不会收到任何道具。
为了更容易理解我也把路线;
render() {
return (
<div className="hangouts-body">
<div>
<Route path="/" exact={true} component={WelcomeScreen} />
<Route path="/Groups" exact={true} component={Groups} />
<Route path="/Activities" exact={true} component={Activities} />
<Route path="/OneActivity" exact={true} component={OneActivity} />
</div>
</div>
);
}
答案 0 :(得分:5)
通过url获取道具在React中有点不同。 以下几行简要介绍了该过程
路线部分:
<Route path="/Activities/:idUser" exact={true} component={Activities} />
重定向部分:
<Redirect to={"/Activities/" + this.state.idUser }/>
获得道具部分
props.match.params.idUser
答案 1 :(得分:0)
我在没有向用户显示的情况下传递数据所做的是使用历史记录,
this.props.history.push({
pathname:"/shopdetail",
state:{
key:"value"
}
});
在ShopDetail组件中,您可以访问对象,
this.props.location.state.key
答案 2 :(得分:0)
就像将其发送到to:object一样简单,检查文档https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/Redirect.md
<Redirect
to={{
pathname: "/login",
state: {
from: props.location
}
}}
/>
然后可以通过this.props.location.state.from