重定向后无法访问组件中的this.props.location

时间:2018-05-14 11:04:47

标签: javascript reactjs react-router

在组件1的某处,我有:

if (redirectToReferrer) {
    return <Redirect to={{
          pathname: "/test/new",
          state: { event: "test" }
     }} />;
}  

在我的组件2中,我有这个:

constructor(props){
    super(props);
    console.log(this.props.location) //undefined
}

根据docs,这应该有用。

  

可以通过this中的this.props.location.state访问状态对象   重定向到组件。这个新的推荐人密钥(这不是特别的   然后将通过this.props.location.state.referrer访问。)   路径名'/ login'

指向的Login组件

为什么this.props.location未定义?

3 个答案:

答案 0 :(得分:2)

确保“ / test / new”由 App.js 中的<Route/>组件定义或在定义路由的任何位置。

<Route path="/test/new" component={NewTestComp}/>

如果已使用render方法定义了定义,请确保将props这样传递给组件。

<Route path="/test/new" render={(props) => <NewTestComp {...props}/>}/>

答案 1 :(得分:1)

技术上直接路由的组件如下:

<Route path="/about" component={About} />

具有由路由器提供的道具,例如位置,因此请确保无论您在何处重定向,该组件都有定义的路由。

答案 2 :(得分:0)

升级到最新版本的 react-router-dom。目前在 5.2.0 版本