disableOpenGesture hiding is not working Navigation Drawer react native

寵の児 提交于 2020-01-30 01:16:01

问题


We are using Navigation Drawer in our application to show side menu. In a few of the screens we don't want to show this navigation drawer once user tried to do left/right gestures.

So, for that, we are trying to hide a particular screen - gestures/navigationdrawer - but it's not working. When the user swipes (left/right) the drawer still opens.


    const AppNavigator = StackNavigator(
      {
        // Drawer: { screen: Drawer },
        Register: {
          screen: Register,
          navigationOptions: ({ navigation }) => ({
            drawerLockMode: "locked-closed",
          })
        },
        TabHome: { screen: TabHome },
        Album: { screen: Album },
        offlineContent: { screen: offlineContent },
        changePassword: { screen: changePassword },
        Player: {screen: Player},
      },
      {
        initialRouteName: "TabHome",
        // header: null
      }
    );

We have tried both drawerLockMode:"locked-closed" and disableOpenGesture: true but nothing is working.

Note: I am using "react-navigation": "^3.0.9" version

Any suggestions to disable navigation drawer being opened by gestures?


回答1:


can you try this code?

const AppNavigator = StackNavigator(
      {
        // Drawer: { screen: Drawer },
        Register: {
          screen: Register
        },
        TabHome: { screen: TabHome },
        Album: { screen: Album },
        offlineContent: { screen: offlineContent },
        changePassword: { screen: changePassword },
        Player: {screen: Player},
      },
      {
        initialRouteName: "TabHome",
        // header: null
      }
    );
AppNavigator.navigationOptions = ({ navigation }) => {
  const navigationOptions = {};
  if (getCurrentRouteName(navigation.state) === 'Register') {
    navigationOptions.drawerLockMode = 'locked-closed';
  }
  return navigationOptions;
};

OR If your react-navigation version is V2,

const Stack = createStackNavigator({
    Register: Register,
},
    {
        drawerLockMode: 'locked-closed'
    }
);

getCurrentRouteName function

getCurrentRouteName(navState) {

    if (navState.hasOwnProperty('index')) {
        this.getCurrentRouteName(navState.routes[navState.index])
    } else {
        console.log("Current Route Name:", navState.routeName)
        // can then save this to the state (I used redux)
        store.dispatch(setCurrentRouteName(navState.routeName))
    }

}


来源:https://stackoverflow.com/questions/55811507/disableopengesture-hiding-is-not-working-navigation-drawer-react-native

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!