В реакцию родной, я хочу, чтобы отключить ящик на
Login
и включить ящик наDashboard
экране. Я применил'react-native-drawer'
сNavigator
для перемещения между маршрутами.Как установить «реагировать нативный ящик» виден только на панель управление после входа в реакцию родного
визуализации метод следующим образом:
render() {
<Drawer
ref={(ref) => this._drawer = ref}
disabled={!this.state.drawerEnabled}
type="overlay"
content={<Menu navigate={(route) => {
this._navigator.push(navigationHelper(route));
this._drawer.close()
}}/>}
tapToClose={true}
openDrawerOffset={0.2}
panCloseMask={0.2}
closedDrawerOffset={-3}
styles={{
drawer: {shadowColor: '#000000', shadowOpacity: 0.8, shadowRadius: 3},
main: {paddingLeft: 3}
}}
tweenHandler={(ratio) => ({
main: { opacity:(2-ratio)/2 }
})}>
<Navigator
ref={(ref) => this._navigator = ref}
configureScene={(route) => Navigator.SceneConfigs.FloatFromLeft}
initialRoute={{
id: 'Login',
title: 'Login',
index: 0
}}
renderScene={(route, navigator) => this._renderScene(route, navigator)}
navigationBar={
<Navigator.NavigationBar
style={styles.navBar}
routeMapper={NavigationBarRouteMapper} />
}
/>
</Drawer>
);
}
renderScene следующим образом, чтобы перемещаться по маршрутам:
_renderScene(route, navigator) {
navigator.navigate = self.navigate;
switch (route.id) {
case 'Login':
return (<Login navigator={navigator}/>);
case 'Dashboard':
return (<Dashboard navigator={navigator}/>);
}
}
Я написал один метод для включения и отключения ящик в реакции -натив:
navigate(route, method){
if(route)
switch (route.id) {
case 'Login':
this.state = {drawerEnabled: false, navigationBarEnabled: false};
break;
case 'Dashboard':
this.state = {drawerEnabled: true, navigationBarEnabled: true};
break;
}
this.forceUpdate();
this.refs.navigator[method](route);
}
}
Первоначально я установил свойство в классе и в конструкторе, вызывается метод навигации.
state = {drawerEnabled:true, navigationBarEnabled: true};
constructor(){
super();
this.navigate = this.navigate.bind(this);
}
Тогда, которые можно было бы способ отключить ящик на Login
меню и включить его на Dashboard
экране.
Superb. На самом деле теперь могу сказать. Я сделал ошибку в своей собственной стратегии. Я фактически добавляю ящик на разные страницы, которым нужен ящик. – SSS