Реагировать на родную NavigationDrawer navigation.toggleDrawer () не работает - PullRequest
0 голосов
/ 13 июня 2018

У меня есть кнопка в заголовке, чтобы открывать и закрывать меню ящика навигации.Когда я вызываю приведенный ниже метод из componentDidMount (), он работает и открывает меню:

this.props.navigation.toggleDrawer();

Но когда я нажимаю кнопку, он не работает и просто исчезает с экрана!Вот код компонента:

export class Home extends BaseScreen {
  constructor(props) {
    super(props);
  }

  static navigationOptions = ({ navigation }) => {
    const { params = {} } = navigation.state;
    return ({
      headerStyle: {
        backgroundColor: '#FF9800'
      }
      , headerRight: <UserCoins />
      , headerLeft: <Button onPress={params.handlePress} title='Menu' />
      , title: 'title'
    })
  }

  _handlePress() {
    this.props.navigation.toggleDrawer();
  }

  state = {
    coins: 0,
  }
  //

  componentDidMount() {
    this.props.navigation.setParams({
      handlePress: this._handlePress.bind(this)
    });
    //here working
    this.props.navigation.toggleDrawer();
  }

  render() {
    return (<Text />);
  }

}

export default Home

Моя структура навигатора:

1.SwitchNavigator

2.BottomTabNavigator

3.DrawerNavigator

4.StackNavigator (Домашний компонент внутри него)

1 Ответ

0 голосов
/ 14 июня 2018

Вы можете вызывать «навигацию», которую вы передаете в статические NavigationOptions, вместо того, чтобы пытаться связать ее в параметрах навигации.

Попробуйте это на мероприятии onPress для своей кнопки

onPress={() => navigation.navigate('DrawerToggle')}
...