React Native NavigationDrawer - 如何在 createDrawerNavigation 内启动警报

2024-01-11

我正在尝试通过反应导航制作的导航抽屉中的项目单击来触发注销(确认警报)。您知道一种有效的方法吗?

这是 DrawerNavigator 文件中的代码:

export default createDrawerNavigator({
    Home: { screen: Home },
    Dashboard: { screen: Dashboard },
    Logout: { screen: Logout }
} ...

当尝试调用最后一个元素(注销)时,我知道我需要调用一个从 Component 类扩展的类,但是问题就像下一个代码,在这种情况下,正如你所看到的,我在渲染方法中返回了 null,它清除了完全覆盖屏幕,但是当尝试单击警报按钮时,它没有给我任何东西

import React, {Component} from 'react';
import { Alert } from 'react-native';

class Logout extends Component{

constructor(props){
    console.log('those are the props '+JSON.stringify(props))
    super(props);
    this.logoutAlert();
}

logout = ()=>{
    //const deleted_element = clearAllData();
    console.log('Logout.js - Element deleted ');
}

canceledLogout = () => {
    console.log('The logout process is now cancelled');
}

logoutAlert() {
    Alert.alert(
        'Confirm',
        'Are you sure that you want to logout?',
        [
            { text: 'Yes', onPress: () => this.logout },
            { text: 'Cancel', onPress: () => this.canceledLogout }
        ]
    );
}

render(){
  return null;
}


}

export default Logout;

所以之后的问题是:有没有办法做到这一点(通过单击 navDrawerItem 显示警报而不渲染屏幕?非常感谢您的帮助


我认为您可以定义一个自定义的,而不是定义一个空的注销屏幕(返回 null)DrawerComponent可以处理诸如提示之类的事情Alerts and 导航到不同的屏幕。

通过这样做你的DrawerNavigator看起来与此类似 -

export const DrawerNavigator = createDrawerNavigator({
    Home: { screen: Home },
    Dashboard: { screen: Dashboard },

    ...More Screens
  }, {
    drawerOpenRoute: 'DrawerOpen',
    drawerCloseRoute: 'DrawerClose',
    drawerToggleRoute: 'DrawerToggle',
    drawerWidth: 250,
    useNativeAnimations: true,
    contentComponent: DrawerComponent
})

并且您可以创建您的DrawerComponent像这样 -

class DrawerComponent extends React.Component {
  navigateTo = (routeName) => {
    this.props.navigation.navigate(routeName)
  }

  logout = ()=>{
    //const deleted_element = clearAllData();
    console.log('Logout.js - Element deleted ');
  }

  canceledLogout = () => {
    console.log('The logout process is now cancelled');
  }

  logoutAlert = () => {
    Alert.alert(
      'Confirm',
      'Are you sure that you want to logout?',
      [
          { text: 'Yes', onPress: () => this.logout },
          { text: 'Cancel', onPress: () => this.canceledLogout }
      ]
    );
  }

  render() {
    <ScrollView>
      <TouchableOpacity onPress={() => this.navigateTo('Home')}> Home </TouchableOpacity>
      <TouchableOpacity onPress={() => this.navigateTo('Dashboard')}> Dashboard </TouchableOpacity>
      <TouchableOpacity onPress={this.logoutAlert}> Logout </TouchableOpacity>
    </ScrollView>
  }
}

...

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native NavigationDrawer - 如何在 createDrawerNavigation 内启动警报 的相关文章

随机推荐