【问题标题】:Toggling Between State Value - Toggle Function在状态值之间切换 - 切换功能
【发布时间】:2019-08-14 20:03:02
【问题描述】:

在我的 React 应用程序中,我有一个功能组件并且想要在状态值之间切换。我的toggleNav 功能似乎不起作用。我正在尝试将 isMenuOpen 设置为 isMenuOpen 不是,但我的语法似乎不正确。

我有以下代码:

const navBar = () => {

  //set initial state
  const [isMenuOpen] = useState(false);

  // toggle variable
  let toggleNav = () => {
    isMenuOpen = !isMenuOpen;
  }

  return (
    <button onClick={toggleNav}>Toggle</button>
  )

}

【问题讨论】:

    标签: javascript reactjs state


    【解决方案1】:

    useState 返回的第二个元素是setter。你不能只是改变状态。试试这个:

    const navBar = () => {
    
      //set initial state
      const [isMenuOpen, setMenuOpen] = useState(false);
    
      // toggle variable
      let toggleNav = () => {
        setMenuOpen(!isMenuOpen)
      }
    
      return (
        <button onClick={toggleNav}>Toggle</button>
      )
    
    }
    

    正如 cmets 中指出的,toggleNav 是不必要的:

    const navBar = () => {
    
      //set initial state
      const [isMenuOpen, setMenuOpen] = useState(false);
    
    
      return (
        <button onClick={() => setMenuOpen(!isMenuOpen)}>Toggle</button>
      )
    
    }
    

    【讨论】:

    • 为什么还要定义toggleNav,更好的是为什么要定义let?这是非常浪费的编程。只需{e=&gt;setMenuOpen(!isMenuOpen)} 就足够了
    • 只是修改他的例子。我也不会声明toggleNav
    • @r3wt 是否因为我只使用一次而被认为是浪费?因此应该使用内联?
    • 我认为这不是性能问题。只是很多不必要的代码
    • 在这么小的组件中声明变量所花费的时间可以忽略不计
    猜你喜欢
    • 2015-03-27
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    相关资源
    最近更新 更多