0

我有一个带有切换侧边菜单的按钮的 topBar。

我已经注册了一个 navigationButtonPressed 操作,如下所示

navigationButtonPressed({ buttonId }) {
    switch (buttonId) {
      case 'sideMenuButtonId':
        Navigation.mergeOptions(this.props.componentId, {
          sideMenu: {
            left: {
              visible: true
            }
          }
        });
        break
      default:
        break
    }
  }

但在这种情况下,该按钮仅使 sideMenu 可见,我试图使用它来切换菜单的打开和关闭。所以我用下面看到的可变方法替换了上面的内容..

var sideMenuVisible = false

navigationButtonPressed({ buttonId }) {
    switch (buttonId) {
      case 'sideMenuButtonId':
        sideMenuVisible = !sideMenuVisible
        Navigation.mergeOptions(this.props.componentId, {
          sideMenu: {
            left: {
              visible: sideMenuVisible
            }
          }
        });
        break
      default:
        break
    }
  }

如果用户只使用按钮打开和关闭sideMenu,则效果很好,但用户也可以通过滑动打开菜单以及点击菜单关闭菜单来打开/关闭菜单。

有没有办法检查 的可见性,sideMenu以便我可以正确使用操作来打开/关闭命令菜单?

4

1 回答 1

0

它可以做得更简单。认为您应该将其创建为状态,因为组件必须知道,当状态更改时,它应该重新呈现。所以像

state = { isOpen: false };

toggleSidebar = () => {
  this.setState({ isOpen: !isOpen })
}

现在,您应该在单击按钮时调用 toggleSidebar 函数

于 2018-12-28T09:11:00.900 回答