Открытое меню React-Native в окне стека-навигатора - PullRequest
0 голосов
/ 22 декабря 2018

В моем приложении у меня есть 3 стека, например StackOne

export const StackOne = createStackNavigator({
  OneScreen: { screen:one  },
  TwoScreen: { screen:two  },
  ThreeScreen: { screen:three  },
}, { initialRouteName: 'OneScreen', }
);

StackTwo

export const StackTwo = createStackNavigator({
  OneScreenTwo: { screen:oneTwo  },
  TwoScreenTwo: { screen:twoTwo  },
  ThreeScreenTwo: { screen:threeTwo  },
}, { initialRouteName: 'OneScreenTwo', }
);

.этот. MainDrawer

const MainDrawer = createDrawerNavigator(
  {
    One: { screen: StackOne },
    Two: { screen: StackTwo },
    Other: { screen: OtherScreen},
  },
  {}
);

Все работает нормально.Управление ящиком - чтобы сложить очень хорошо, единственная проблема - когда я в StackOne's ScreenTwo, проведя пальцем влево-вправо, все еще открываю меню ящика.не только этот экран в каждом меню открытого окна ящика.

Я пробую несколько ссылок, но не могу найти успех.Надеюсь, кто-нибудь поможет.Я перехожу по этой ссылке Навигация

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018
export const StackOne = createStackNavigator({
  OneScreen: { screen:one  },
  TwoScreen: { screen:two  },
  ThreeScreen: { screen:three  },
}, { initialRouteName: 'OneScreen', }
);


StackOne.navigationOptions = ({ navigation }) => {
  let drawerLockMode = 'unlocked';
  if (navigation.state.routes[navigation.state.index] != 'OneScreen') {
    drawerLockMode = 'locked-closed';
  }
  return {
    drawerLockMode,
  };
};


export const StackTwo = createStackNavigator({
  OneScreenTwo: { screen:oneTwo  },
  TwoScreenTwo: { screen:twoTwo  },
  ThreeScreenTwo: { screen:threeTwo  },
}, { initialRouteName: 'OneScreenTwo', }
);

StackTwo .navigationOptions = ({ navigation }) => {
  let drawerLockMode = 'unlocked';
  if (navigation.state.routes[navigation.state.index] != 'OneScreenTwo') {
    drawerLockMode = 'locked-closed';
  }
  return {
    drawerLockMode,
  };
};

Создать опцию навигации и устранить проблему.

0 голосов
/ 27 декабря 2018

Вам необходимо указать navigationOptions в StackNavigator вместо TwoScreen и т. Д., В противном случае он будет настраивать StackNavigator вместо DrawerNavigator:

StackOne.navigationOptions = ({ navigation }) => ({
  drawerLockMode: navigation.state.index === 0 ? 'unlocked' : 'locked-closed',
}); 

Рабочий пример: https://snack.expo.io/@riwu/stack-nav-lock-drawer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...