我有一个react {路由器应用程序,可以在User
上安装/users
。它工作正常。
然后我点击传递新道具的/users?page=2
链接。此处getData
使用this.props.location.query
。因此,从componentWillReceiveProps调用getData将从第1页而不是第2页获取内容。
如果存在,我会使用组件 HasReceived Props方法。我能做些什么呢?
componentWillMount: function(){
this.setState({data:null});
this.getData();
},
componentWillReceiveProps: function(nextProps){
this.setState({data:null});
this.getData();
},
答案 0 :(得分:1)
夫妻俩。
1)在this.setState
内同步使用componentWillMount
有效,但没有任何意义,因为您可能会在getInitialState
内完成此操作。
2)如果你想对这样的道具变化作出反应,你需要使用nextProps
内的componentWillreceiveProps
对象。一个简单的解决方法是更改getData
方法以允许nextProps
传递给它。如:
getData: function(nextProps) {
var props = nextProps || this.props;
// your getData stuff
}
然后将componentWillReceiveProps
方法作为this.getData(nextProps)
传递给您。