最近创建了一个注销功能。当用户单击注销时,将提示他们进行对话框,询问"您确定要注销吗?"。对于对话框,我使用了一个名为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);
})
})
}