反应componentDidUpdate错误内的本机调用setState

时间:2019-10-31 11:10:12

标签: javascript reactjs react-native react-navigation

我有一个使用反应导航的多屏应用程序,并将一个从CameraScreen传递到HomeScreen的道具称为“条形码”,如下所示:

takePicture() {
        //Redirect 
        this.props.navigation.navigate('Home', {barcode: true});
    }

来源:https://reactnavigation.org/docs/en/params.html

在主屏幕上,我正在侦听componentDidMount中的道具更新,如果条形码为true,请使用setState渲染新组件,如下所示:

 componentDidUpdate(){
    if(this.props.navigation.getParam('barcode') === true) {
      this.setState({
        barcodeActive: true
      })
    }
  }

我从在componentDidMount中调用setState收到错误Invariant Violation: Maximum update depth exceeded。我知道它处于无限循环中,没有间断。

当该道具传递给setState时,我该如何听?或者有什么更好的方法来实现我的追求?

1 个答案:

答案 0 :(得分:1)

您可以使用np.stack((a1,a2,a3), axis=1) # array([[77, 23, 0], # [72, 27, 1], # [81, 19, 0], # [57, 42, 1], # [84, 16, 0], # [60, 39, 1], # [97, 2, 1], # [54, 45, 1], # [52, 48, 0], # [86, 14, 0]]) 参数,然后比较prevProps的当前值和先前值。如果它们不相同,则可以更新状态。

barcode