如何使用 useState 在点击时显示/隐藏移动导航栏? React + TypeScript + Tailwind 项目

Posted

技术标签:

【中文标题】如何使用 useState 在点击时显示/隐藏移动导航栏? React + TypeScript + Tailwind 项目【英文标题】:How can I show/hide mobile navbar on click using useState? React + TypeScript + Tailwind project 【发布时间】:2021-10-30 12:17:07 【问题描述】:

作为主题,我尝试使用“useState”在单击时显示/隐藏移动导航栏,但单击时菜单未显示。我该如何解决?

这是与此问题相关的实际代码。

  const [navbarOpen, setNavbarOpen] = useState(false)
  return (
   
      /* mobile navbar */
      <div className='cursor-pointer'>
        <div className='flex justify-between md:hidden px-8 py-4'>
          <div className='flex'>
            <button>
              <svg
                xmlns='http://www.w3.org/2000/svg'
                className='w-8 h-8 text-white p-2 bg-indigo-500 rounded-full flex self-center'
                viewBox='0 0 24 24'
                onClick=onClickHome
              >
                <path d='M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5'></path>
              </svg>
            </button>
            <span className='ml-3 text-md cursor-pointer' onClick=onClickHome>
              Chat App
            </span>
          </div>
          <svg
            xmlns='http://www.w3.org/2000/svg'
          >
          </svg>
        </div>
       /* collapsable navbar */
        <div className=  navbarOpen ? ' flex' : ' hidden'>
          <div
            onClick=onClickUserManagement
            className='text-center block text-base hover:text-gray-900 mb-1'
          >
            User All
          </div>
          <div
            onClick=onClickSetting
            className='text-center block text-base hover:text-gray-900 mb-1'
          >
            Setting
          </div>
          <div
            onClick=onClickSetting
            className='text-center block text-base hover:text-gray-900 mb-1 pb-4'
          >
            Third Link
          </div>
        </div>
      </div>
    </header>
  )
)

【问题讨论】:

我没有看到任何调用setNavbarOpen(true),你需要调用它。 非常感谢!没错,我忘了将 onClick=() => setNavbarOpen(!navbarOpen) 添加到菜单图标中。谢谢。 好吧,现在移动菜单在我单击它以在移动设备上显示后保持打开状态,并将其放大到平板电脑/网络视图。 我想在 className 中添加“md-hidden”来解决它。我该怎么做? 自己解决了。 className='md:hidden'+ (navbarOpen ? 'flex' : 'hidden') 非常感谢! 不错!不客气 【参考方案1】:

这是我在评论区从 Zeke Hernandez 那里得到的答案。

className='md:hidden'+ (navbarOpen ? ' flex' : ' hidden')

此问题现已结束。谢谢。

【讨论】:

以上是关于如何使用 useState 在点击时显示/隐藏移动导航栏? React + TypeScript + Tailwind 项目的主要内容,如果未能解决你的问题,请参考以下文章

TinyMCE 工具栏在点击时显示并在点击时隐藏

如何在按钮单击时显示/隐藏内容? [关闭]

Swift UICollectionView 在点击时显示/隐藏项目

滚动时显示和隐藏 Div

如何在按下按钮的同时选择两个下拉选项时显示隐藏div

引导工具提示在点击时显示,但在鼠标移出时隐藏