当组件收到道具时如何做某事

时间:2015-10-01 08:11:30

标签: javascript reactjs

我有一个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();
  },

1 个答案:

答案 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)传递给您。