0

当我调用this.props.relay.setVariables时,Relay 会在给定这些新变量的情况下获取数据,然后我想用这些数据做一些事情。但是,我想不出一个好方法来确切地知道这种情况何时发生。我首先尝试在setVariables上使用 onReadyStateChange回调,但这并没有抓住道具被填充的那一刻。

我最终解决问题的方法是在componentWillRecieveProps中使用setTimeout,然后用新数据填充道具。但是有没有更好的方法来确定何时获取数据?

4

1 回答 1

0

不需要在setTimeout内部调用,componentWillReceiveProps(nextProps)因为一旦组件的道具发生变化,生命周期方法就会自动调用,所以你只需要一个像这样的条件块componentWillReceiveProps(假设可以通过===检查来区分变量)

if(this.props.data !== nextProps.data){
//do your stuff
}

或者如果是数组,您可以使用该length字段:data

if(this.props.data.length !== nextProps.data.length){
//do your stuff
}

如果条件成立,则意味着您已收到您正在寻找的新数据并且您可以对其进行处理。

于 2016-08-04T09:45:58.547 回答