2

我目前正在尝试从 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: {
                ...
              }
            },
          },
        },

      });

有没有办法在当前版本中做到这一点?

4

2 回答 2

9

原来你不能在 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
        }
      }
});
于 2018-07-02T21:11:14.870 回答
2

您可以在组件中设置一个布尔值来识别侧抽屉屏幕的当前状态,然后您可以使用该布尔值通过 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,
      }
    }
  });
 }
}
于 2018-11-08T20:47:04.743 回答