为什么componentWillUnmount()无法执行?

时间:2019-08-28 21:42:20

标签: reactjs react-native react-native-navigation

在一个项目中,我正在使用wix的RNN。在其中有一个屏幕的地方,让我们称之为“ Screen1”。屏幕1具有一个调用Navigation.push()并移至“屏幕2”的按钮。屏幕1在componentWillUnmount()中设置了一个警报。但是当屏幕改变时,警报将永远不会显示。

export default class Screen1 extends React.Component {
  componentDidMount() {
    Navigation.events().bindComponent(this);
  }
  componentWillUnmount() {
    alert("Goodbye screen1");
  }
  nextScreen = () => {
    Navigation.push(this.props.componentId)
  }
  render() {
    <View style={{height: '100%', width='100%'}}>
      <TouchableOpacity onPress={this.nextScreen}>
        <Text>Test Button</Text>
      </TouchableOpacity>
    </View>
  }
}

我希望在移至下一个屏幕时触发警报。但是,该组件似乎仍被挂载,因为没有触发警报,并且screen1的componentDidMount()中有一个函数(未显示)正在从下一个屏幕执行。那么,wix如何在屏幕变化时处理组件生命周期?

1 个答案:

答案 0 :(得分:1)

正在发生的事情是您的组件仍在安装中。您只是在其顶部推了另一个屏幕。它不可见,但仍在安装。

我不是RNN的专家,但我认为您正在寻找的是componentDidDisappear事件。

希望有帮助。