如何通过 React_router 传递状态?

新手上路,请多包涵

这是给我带来麻烦的文件:

 var Routers = React.createClass({

  getInitialState: function(){
    return{
      userName: "",
      relatives: []
    }
  },

  userLoggedIn: function(userName, relatives){
    this.setState({
      userName: userName,
      relatives: relatives,
    })
  },

  render: function() {
    return (
      <Router history={browserHistory}>
        <Route path="/" userLoggedIn={this.userLoggedIn} component={LogIn}/>
        <Route path="feed" relatives={this.state.relatives} userName={this.state.userName} component={Feed}/>
      </Router>
    );
  }
});

我正在尝试将新的 this.state.relativesthis.state.userName 通过路由传递到我的“提要”组件中。但我收到此错误消息:

警告:[react-router] 你不能改变;它将被忽略

我知道为什么会发生这种情况,但不知道我应该如何将状态传递给我的“feed”组件。在过去的 5 个小时里,我一直在尝试解决这个问题,我变得非常绝望!

请帮忙!谢谢


解决方案:

下面的答案很有帮助,我感谢 athors,但他们不是最简单的方法。在我的情况下,最好的方法是这样的:当你改变路线时,你只需像这样附加一条消息:

 browserHistory.push({pathname: '/pathname', state: {message: "hello, im a passed message!"}});

或者,如果您通过链接进行操作:

 <Link
    to={{
    pathname: '/pathname',
    state: { message: 'hello, im a passed message!' }
  }}/>

来源: https ://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/location.md

在您尝试访问的组件中,您可以像这样访问变量,例如:

   componentDidMount: function() {
    var recievedMessage = this.props.location.state.message
  },

我希望这有帮助! :)

原文由 Jonas Bergner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 248
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进