按下按钮打开 SideMenu
Opening SideMenu on button press
我目前正在尝试从 V1 升级到 react-native-navigation V2,但在尝试找到一种在按下顶部栏按钮时切换侧边菜单的方法时遇到了困难。
我的应用以
开头
Navigation.setRoot({
root: {
sideMenu: {
left: {
component: {
name: 'testApp.SideDrawer',
passProps: {
text: 'This is a left side menu screen'
}
}
},
center: {
bottomTabs: {
...
}
},
},
},
});
当前版本有办法吗?
事实证明,您不能在 V2 中使用 this.props.navigator.toggleDrawer,而应该使用 Navigator.mergeOptions 来更改抽屉可见性。
就我而言:
1) 首先给抽屉分配一个Id(id: leftSideDrawer)
Navigation.setRoot({
root: {
sideMenu: {
left: {
component: {
name: 'testApp.SideDrawer',
id: 'leftSideDrawer'
}
},
center: {
bottomTabs: {
...
}
},
},
},
});
2) 用它来改变抽屉的可见性
Navigation.mergeOptions('leftSideDrawer', {
sideMenu: {
left: {
visible: true
}
}
});
您可以在组件中设置一个布尔值来标识侧抽屉屏幕的当前状态,然后您可以使用该布尔值通过 mergeOptions 设置抽屉的可见性。基本上切换!以下是实现此目的的代码段。
constructor(props) {
super(props);
this.isSideDrawerVisible = false;
Navigation.events().bindComponent(this);
}
navigationButtonPressed({ buttonId }) {
if (buttonId === "openSideDrawer") {
(!this.isSideDrawerVisible) ? this.isSideDrawerVisible = true : this.isSideDrawerVisible = false
Navigation.mergeOptions(this.props.componentId, {
sideMenu: {
left: {
visible: this.isSideDrawerVisible,
}
}
});
}
}
我目前正在尝试从 V1 升级到 react-native-navigation V2,但在尝试找到一种在按下顶部栏按钮时切换侧边菜单的方法时遇到了困难。
我的应用以
开头Navigation.setRoot({
root: {
sideMenu: {
left: {
component: {
name: 'testApp.SideDrawer',
passProps: {
text: 'This is a left side menu screen'
}
}
},
center: {
bottomTabs: {
...
}
},
},
},
});
当前版本有办法吗?
事实证明,您不能在 V2 中使用 this.props.navigator.toggleDrawer,而应该使用 Navigator.mergeOptions 来更改抽屉可见性。 就我而言:
1) 首先给抽屉分配一个Id(id: leftSideDrawer)
Navigation.setRoot({
root: {
sideMenu: {
left: {
component: {
name: 'testApp.SideDrawer',
id: 'leftSideDrawer'
}
},
center: {
bottomTabs: {
...
}
},
},
},
});
2) 用它来改变抽屉的可见性
Navigation.mergeOptions('leftSideDrawer', {
sideMenu: {
left: {
visible: true
}
}
});
您可以在组件中设置一个布尔值来标识侧抽屉屏幕的当前状态,然后您可以使用该布尔值通过 mergeOptions 设置抽屉的可见性。基本上切换!以下是实现此目的的代码段。
constructor(props) {
super(props);
this.isSideDrawerVisible = false;
Navigation.events().bindComponent(this);
}
navigationButtonPressed({ buttonId }) {
if (buttonId === "openSideDrawer") {
(!this.isSideDrawerVisible) ? this.isSideDrawerVisible = true : this.isSideDrawerVisible = false
Navigation.mergeOptions(this.props.componentId, {
sideMenu: {
left: {
visible: this.isSideDrawerVisible,
}
}
});
}
}