这是给我带来麻烦的文件:
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.relatives
和 this.state.userName
通过路线进入我的“饲料”组件。但是我收到了这个错误消息:
警告: [反应-路由器]你不能改变; 它会改变 被忽略了
我知道为什么会发生这种情况,但不知道如何将状态传递给我的“ feed”组件。在过去的5个小时里,我一直在试图解决这个问题,但是我已经非常绝望了!
救命啊! 谢谢
下面的答案是有帮助的,我感谢 Thors,但他们不是最容易的方式做到这一点。 对我来说,最好的解决办法是这样的: 当你改变路线的时候,你只需要像这样附加一条消息:
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
},
我希望这有帮助! :)