Когда пользователь нажимает на кнопку страницы в SideMenu, ящик закрывается, и происходит навигация.
Компонент HamburgerMenu имеет внутреннее состояние, в котором указано, должен ли он быть знаком гамбургера или знаком «X».".
Проблема в том, что HamburgerMenu не знает об этой навигации (и, следовательно, не знает о том, что ящик был закрыт), поэтому значок остается" X ", когда ящик закрыт пользователемщелкните.
Я не могу найти способ заставить SideMenu уведомить HamburgerMenu об изменении / событии.
Вот соответствующий код из App.js:
const DrawerNavigator = createDrawerNavigator({
Home: {
screen: HomeScreen
},
Settings: {
screen: SettingsScreen
}
}, {
initialRouteName: 'Home',
contentComponent: SideMenu
});
const AppNavigator = createStackNavigator({
DrawerNavigator: {
screen: DrawerNavigator,
navigationOptions: ({ navigation }) => ({
headerLeft: <HamburgerMenu navigation={navigation} />
})
}
});
const AppContainer = createAppContainer(AppNavigator);
export default AppContainer;
РЕДАКТИРОВАТЬ: Вот мой код HamburgerMenu:
export default class HamburgerMenu extends Component {
constructor(props){
super(props);
this.state={
active: false
}
}
onPress(){
let newActive = !this.state.active;
this.setState({active: newActive});
if(newActive){
this.props.navigation.dispatch(DrawerActions.openDrawer())
}
else {
this.props.navigation.dispatch(DrawerActions.closeDrawer())
}
}
render(){
return (
<Hamburger active={this.state.active} type="spinCross" onPress={this.onPress.bind(this)} />
);
}
}
Спасибо!