React native Stack navigator Back Handler

时间:2017-12-04 20:17:15

标签: android ios reactjs react-native

React native Stack Navigator从应用程序的每个页面转到主页的默认路由(initialroutename)我想从几页开始转到以前的页面,并禁用从几页开始到后页。 Back Handler在这种情况下甚至没有帮助。我怎样才能实现这个目标

     class AppNavigator extends Component {

      constructor(props) {
        super(props)
        this.handleBackButtonClick = this.handleBackButtonClick.bind(this);
    }

    componentWillMount() {
        BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
    }

    componentWillUnmount() {
        BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
    }

    handleBackButtonClick() {
        this.props.navigation.goBack();
        return true;
    }

      render() {
        return;
      }
    }

    export default AppNavigator;

抽屉导航器代码。所有路线也在这里定义。

        import React from "react";
    import { DrawerNavigator } from "react-navigation";

    import Home from "./components/home/";
    import SideBar from "./components/sidebar";
    import Dashboard from "./components/Dashboard/";
    import Profile from "./components/Profile"
    import Contact from "./components/Contact"
    import Terms from "./components/terms"
    import Links from "./components/Links"
    import Register from "./components/Register"
    import Discover from "./components/Discover/";



    const Drawer = DrawerNavigator(
      {
        Home: { screen: Home },
        Dashboard: { screen: Dashboard },
        Discover: { screen: Discover }
        Profile : {screen: Profile},
        Contact: { screen: Contact},
        Terms: { screen: Terms},
        Links: { screen: Links},
        Register: { screen: Register,
          navigationOptions: {
            title: "FirstPage",
            header: {
              left: null,
            }
          }, },

      },
      {
        initialRouteName: "Home",
        contentOptions: {
          activeTintColor: "#e91e63"
        },
        drawerPosition: 'right',
        contentComponent: props => <SideBar {...props} />
      }
    );



    export default Drawer;

1 个答案:

答案 0 :(得分:0)

你为什么要处理背部事件?相反,使用导航reset属性,将您的路线重置为0,用户将永远不会返回,因为赌注是空的