реагировать родной ящик не работает - PullRequest
0 голосов
/ 03 сентября 2018

КвикNavigator находится в стеке Navigator.

Я установил заголовок в none и хочу, чтобы часть заголовка работала при нажатии кнопки.

Я написал следующий код.

this.props.navigation.dispatch (DrawerActions.toggleDrawer ());

Ошибка не возникает. Но это ничего не делает.

Код навигатора выглядит так:

navigator.js

const MainScene = createStackNavigator({
 MainTab: {screen: MainTab},
 OtherScene: {screen: OtherScene}
},{...})

const OtherScene: createStackNavigator({
 DrawerScene: {screen: DrawerScene}
},{...})

const DrawerScene = createDrawerNavigator({
 Page1: {screen: Page1},
 Page2: {screen: Page2},
},{...})

Header.js

_sideMenu() {
 this.props.navigation.dispatch(DrawerActions.toggleDrawer());
}

render() {
  return (
   ...
   <TouchableOpacity 
    onPress={() => this._sideMenu()}>
    <Image ... />
   </TouchableOpacity>
   ...
  )
 }

И страница 1, и страница 2 содержат непосредственно написанные заголовки.

Page1.js

render() {
 return(
  <View>
   <Header navigation={this.props.navigation} />
   ...
  </View>
 )
}

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Одним из решений для этого является размещение stackNavigator внутри ящикаNavigation следующим образом:

const MainScene = createStackNavigator({
 MainTab: {screen: MainTab},
 OtherScene: {screen: OtherScene}
},{...})

const OtherScene: createStackNavigator({
 SomeOtherScene: {screen: SomeOtherScene} // remove the drawer from here
},{...})

const DrawerScene = createDrawerNavigator({
 Page1: {screen: Page1},
 Page2: {screen: Page2},
 MainScene: {
     screen: MainScene, 
     navigationOptions: {
         drawerLabel: () => null
    }},
 OtherScene: {
     screen: OtherScene, 
     navigationOptions: {
         drawerLabel: () => null
    }},
},{initialRoute: "MainScene"})

Таким образом, у вас не будет проблем с неопределенностью функций open / close / toggleDrawer, и вы даже можете использовать их следующим образом: this.props.navigation.toggleDrawer ();

Если вы не хотите, чтобы ваши «MainScene» и «OtherScene» появлялись в элементах ящика, просто верните null для их ящикаLabels

0 голосов
/ 03 сентября 2018

попробуйте это import {DrawerActions} из "реакции-навигации";

this.props.navigation.dispatch (DrawerActions.openDrawer ());

this.props.navigation.dispatch (DrawerActions.closeDrawer ());

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