这是给我带来麻烦的文件:
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
通过路线传递到我的“提要”组件中。但我收到此错误消息:
警告:[react-router] 你不能改变;它将被忽略
我知道为什么会发生这种情况,但不知道我应该如何将状态传递给我的“提要”组件。在过去的 5 个小时里,我一直在努力解决这个问题,现在我已经非常绝望了!
请帮忙!谢谢
解决方案:
下面的答案很有帮助,我感谢 ahors,但它们并不是最简单的方法。在我的情况下,最好的方法是这样的:当你改变路线时,你只需像这样附加一条消息:
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
},
我希望这有帮助!:)