如何停止执行,直到React Native中的设置为止



最近创建了一个注销功能。当用户单击注销时,将提示他们进行对话框,询问"您确定要注销吗?"。对于对话框,我使用了一个名为React-Native-native-popup-Dialog的软件包。

实际上,发生的事情是因为这个应用程序与redux相关。我使用操作来注销功能。对于对话框,我使用了组件级别状态。

我的对话代码:

<Dialog
    visible={this.state.showDialog}
    dialogTitle={
    <DialogTitle 
    title="Confirm Logging Out"
    textStyle={{ fontSize: 15 }} 
    />}
    width={0.8}
    footer={
        <DialogFooter>
          <DialogButton
            text="CANCEL"
            textStyle={{ fontSize: 14 }}
            onPress={() => {
              this.setState({ showDialog: false });
            }}
          />
          <DialogButton
            text="CONFIRM"
            textStyle={{ fontSize: 14 }}
            onPress={() => {
                this.onLogoutPress();
            }}
          />
        </DialogFooter>
      }
    onTouchOutside={() => {
    this.setState({ showDialog: false });
    }}
>
    <DialogContent>
        <Text style={{ fontSize: 14, top: 10 }}>Are you sure you want to logout ?</Text>
    </DialogContent>
</Dialog> 

和我的注销按钮代码:

<TouchableOpacity onPress={()=> this.setState({ showDialog: true})} >
  <CardItem>
    <Icon name="log-out" style={{ color: '#03A9F4' }} />
    <Body>
      <Text>Logout</Text>
    </Body>
    <Right>
      <Icon name="arrow-forward" />
    </Right>
  </CardItem>
</TouchableOpacity>

所以我的onLogoutPress()代码:

onLogoutPress() {
this.setState({ showDialog: false },() => {
    this.props.logOut(() => {
        this.props.navigation.dispatch(resetActionToWelcome);
    })
})

}

我面临的问题是,当我单击确认按钮时, "onLogoutPress()"射击了,对话框没有关闭,而不是反应导航的重置点。由于setState是异步函数,因此我认为要回来需要时间,在注销操作中,请从Splash屏幕开始启动应用程序。但是直到对话保持打开。

如何处理?

更改您的功能,如下所示,

希望它对您有用第一个方法,

onLogoutPress() {
   this.setState({ showDialog: false },() => {
   setTimeout(() => {
     this.props.logOut(() => {
           this.props.navigation.dispatch(resetActionToWelcome);
      })
      }, 500);
   })
}

使用箭头功能的另一种方式,

onLogoutPress = () => {
   this.setState({ showDialog: false },() => {
     this.props.logOut(() => {
           this.props.navigation.dispatch(resetActionToWelcome);
      })
   })
}

相关内容

  • 没有找到相关文章

最新更新