当我调用this.props.relay.setVariables时,Relay 会在给定这些新变量的情况下获取数据,然后我想用这些数据做一些事情。但是,我想不出一个好方法来确切地知道这种情况何时发生。我首先尝试在setVariables上使用 onReadyStateChange回调,但这并没有抓住道具被填充的那一刻。
我最终解决问题的方法是在componentWillRecieveProps中使用setTimeout,然后用新数据填充道具。但是有没有更好的方法来确定何时获取数据?
当我调用this.props.relay.setVariables时,Relay 会在给定这些新变量的情况下获取数据,然后我想用这些数据做一些事情。但是,我想不出一个好方法来确切地知道这种情况何时发生。我首先尝试在setVariables上使用 onReadyStateChange回调,但这并没有抓住道具被填充的那一刻。
我最终解决问题的方法是在componentWillRecieveProps中使用setTimeout,然后用新数据填充道具。但是有没有更好的方法来确定何时获取数据?
不需要在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
}
如果条件成立,则意味着您已收到您正在寻找的新数据并且您可以对其进行处理。