Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DisableOpen手势隐藏不起作用_Javascript_React Native_Navigation Drawer_Gesture - Fatal编程技术网

Javascript DisableOpen手势隐藏不起作用

Javascript DisableOpen手势隐藏不起作用,javascript,react-native,navigation-drawer,gesture,Javascript,React Native,Navigation Drawer,Gesture,我们在应用程序中使用导航抽屉来显示侧菜单。 在一些屏幕中,我们不希望在用户尝试左/右手势时显示此导航抽屉 因此,为此,我们试图隐藏一个特定的屏幕-手势/导航抽屉-但它不起作用。 当用户滑动(左/右)时,抽屉仍然打开 const AppNavigator=StackNavigator( { //抽屉:{屏幕:抽屉}, 登记册:{ 屏幕:寄存器, 导航选项:({navigation})=>({ 抽屉锁定模式:“锁定关闭”, }) }, TabHome:{screen:TabHome}, 相册:{屏

我们在应用程序中使用导航抽屉来显示侧菜单。 在一些屏幕中,我们不希望在用户尝试左/右手势时显示此导航抽屉

因此,为此,我们试图隐藏一个特定的屏幕-手势/导航抽屉-但它不起作用。 当用户滑动(左/右)时,抽屉仍然打开


const AppNavigator=StackNavigator(
{
//抽屉:{屏幕:抽屉},
登记册:{
屏幕:寄存器,
导航选项:({navigation})=>({
抽屉锁定模式:“锁定关闭”,
})
},
TabHome:{screen:TabHome},
相册:{屏幕:相册},
脱机内容:{屏幕:脱机内容},
更改密码:{屏幕:更改密码},
播放器:{screen:Player},
},
{
initialRouteName:“TabHome”,
//标题:空
}
);
我们已经尝试了
drawerLockMode:“锁定关闭”
禁用打开手势:true
但一切都不起作用

注意:我使用的是
“反应导航”:“^3.0.9”
版本

有没有建议禁用通过手势打开导航抽屉?

你能试试这段代码吗

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;
};
或者如果您的react导航版本为V2

const Stack=createStackNavigator({
注册:注册,
},
{
抽屉锁定模式:“锁定关闭”
}
);
getCurrentRouteName函数

getCurrentRouteName(导航状态){
if(navState.hasOwnProperty('index')){
this.getCurrentRouteName(navState.routes[navState.index])
}否则{
console.log(“当前路由名称:”,navState.routeName)
//然后可以将其保存到状态(我使用了redux)
存储调度(setCurrentRouteName(navState.routeName))
}
}
你能试试这个代码吗

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;
};
或者如果您的react导航版本为V2

const Stack=createStackNavigator({
注册:注册,
},
{
抽屉锁定模式:“锁定关闭”
}
);
getCurrentRouteName函数

getCurrentRouteName(导航状态){
if(navState.hasOwnProperty('index')){
this.getCurrentRouteName(navState.routes[navState.index])
}否则{
console.log(“当前路由名称:”,navState.routeName)
//然后可以将其保存到状态(我使用了redux)
存储调度(setCurrentRouteName(navState.routeName))
}
}

您能否解释第一种方法,以及它的作用?我们正在stacknavigator中禁用该手势。您可以在已定义的AppNavigator代码下添加AppNavigator.navigationOptions。您的意思是我必须添加避免手势所需的所有屏幕吗?getCurrentRouteName Get undefinedStill getCurrentRouteName在AppNavigator.navigationOptions=({navigation})=>{method您能解释第一个方法吗?它将做什么?我们正在stacknavigator中禁用该手势。您可以在定义的AppNavigator代码下添加AppNavigator.navigationOptions。您的意思是我必须添加所有需要避免手势的屏幕吗?getCurrentRouteName Get undefinedStill getCurrentRouteName在Ap中显示undefinedpNavigator.navigationOptions=({navigation})=>{method