【问题标题】:drawerLockMode : 'locked-closed' not working directly with createStackNavigatordrawLockMode : 'locked-closed' 不能直接与 createStackNavigator 一起使用
【发布时间】:2018-09-17 05:45:59
【问题描述】:

当我用createStackNavigator 直接指定drawerLockMode 时,它不起作用。

const drawerStack = createStackNavigator({
  HomeScreen: { screen: HomeScreen },
}, {
  headerMode: 'screen',
  navigationOptions: {
    drawerLockMode:'locked-closed'
  }
})

但是当我使用drawerStack 变量来定义navigationOptions 时,它正在工作。

drawerStack.navigationOptions = ({ navigation }) => {
    drawerLockMode = 'locked-closed';
    return {
       drawerLockMode,
    };
};

当我在createStackNavigator 中直接使用它时,我犯了什么错误吗?

更新

正如@bennygenel 所建议的,我们需要在drawerNavigator 中而不是stackNavigator 中使用drawerLockMode。这是我所做的。

const drawerNavigator = createDrawerNavigator({
    drawerStack: drawerStack
}, {
    contentComponent: DrawerComponent,
    navigationOpions:{
       drawerLockMode:'locked-closed'
    }
})

但它也不能以这种方式工作。它工作的唯一方法是使用使用createStackNavigatorcreateDrawerNavigator 创建的const 变量

【问题讨论】:

  • drawerLockMode 是 DrawerNavigator 的属性。 StackNavigator 在其 navigationOptions 中没有 drawerLockMode 属性。
  • 在这种情况下,它也不应该通过使用变量来工作,对吧?因为当我像drawerStack.navigationOptions = 一样使用它时它正在工作

标签: android ios react-native react-navigation


【解决方案1】:

试试下面的代码,它对我有用:

   const UserHome_StackNavigator = StackNavigator({
      userHm: {
        screen: UserHome,
        navigationOptions: ({ navigation }) => ({
          title: 'User screen title',
          headerStyle: {
            backgroundColor: 'white',
          },
          headerTintColor: 'black'
        }),
     },
    });

    UserHome_StackNavigator.navigationOptions = ({ navigation }) => {
      let drawerLockMode = 'locked-closed';
      //logic here to change conditionaly, if needed
      return {
        drawerLockMode,
     };
   };

【讨论】:

  • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案添加解释并说明适用的限制和假设。
【解决方案2】:

如果有人需要这个:

const drawerNavigator = createDrawerNavigator({
    drawerStack: drawerStack
}, {
    contentComponent: DrawerComponent,
    navigationOpions: ({navigation}) => {

      let routeName = navigation.state.routes[navigation.state.routes.length-1].routeName;

      if(['Animation', 'Splash', 'Intro', 'Login', 'Signup'].indexOf(routeName)>=0){
        return {
          drawerLockMode: 'locked-closed'
        }
      }

      return {}
    }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2015-03-15
    • 2021-05-08
    • 1970-01-01
    • 2023-03-29
    • 2020-01-03
    相关资源
    最近更新 更多