【问题标题】:How to know the sideMenu visibility state如何知道 sideMenu 可见性状态
【发布时间】:2018-12-28 08:49:14
【问题描述】:

我有一个顶部栏,上面有一个用于切换侧边菜单的按钮。

我已经注册了如下的 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 的可见性,以便我可以正确使用操作来根据命令打开/关闭菜单?

【问题讨论】:

    标签: react-native-navigation react-native-navigation-v2


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢乔纳斯。是的,这可能是处理按钮单击的更好方法,但稍微大一点的问题是有效地了解 sideMenu 的可见性,因为它可以通过多种方式关闭/打开。因此,当用户使用按钮/动作而不使用滑动或滑动手势(例如)时,使用变量管理 isOpen 状态的一半时间是可靠的
    • 但听起来您仍然应该将其更改为状态。您不会看到更改变量的任何效果,因为您的组件不会重新渲染
    • @Simon 你能分享我在抽屉屏幕之间导航的代码吗?我在处理滑动手势时遇到问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    相关资源
    最近更新 更多