在react-native中登录后,如何将“react-native-drawer”设置为仅对Dashboard可见
在本机反应中,我想在
Login
禁用抽屉并在Dashboard
屏幕上启用抽屉。 我已经使用Navigator
实现了'react-native-drawer'
来在路线之间导航。
渲染方法如下:
render() { this._drawer = ref} disabled={!this.state.drawerEnabled} type="overlay" content={
renderScene如下导航路线:
_renderScene(route, navigator) { navigator.navigate = self.navigate; switch (route.id) { case 'Login': return ( ); case 'Dashboard': return ( ); } }
我写了一个方法来启用和禁用react-native中的抽屉:
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
屏幕上启用它的可能方法。
您必须更改_renderScene()
方法,如下所示:
_renderScene(route, navigator) { navigator.navigate = this.navigate; switch (route.id) { case 'Login': return ( ); case 'Dashboard': return ( ); } }
不需要navigate()
方法,因此请删除该方法。 您必须根据需要编写所有情况,并且在default case
将其设置为null
。 如果设置为null
表示在Dashboard
页面上禁用left
,但在Dashboard
仅启用title
。
您需要在toolbar
上为left
, right
和title
编写代码,如下所示:
const NavigationBarRouteMapper = { LeftButton(route, navigator, index, navState) { switch (route.id) { case 'Dashboard': return ( {_emitter.emit('openMenu')}}> ) default: return null //For setting Dashboard left button null } }, RightButton(route, navigator, index, navState) { switch (route.id) { case 'Dashboard': return ( {route.onPress()}}> ) default: return null //For setting Dashboard right button null } }, Title(route, navigator, index, navState) { return ( {route.title} ) } }
您可以在登录场景panCloseMask
抽屉的panOpenMask
和panCloseMask
属性设置为0。
像这样的东西
panOpenMask={isItLoginPage? 0 : 0.2} panCloseMask={isItLoginPage? 0 : 0.2} ...