Eric Nguyen
Eric Nguyen

Reputation: 1046

Toggling Between State Value - Toggle Function

In my React App, I have a functional component and wanted to toggle between a state's value. My toggleNav function doesn't seem to working. I'm trying to set isMenuOpen to what isMenuOpen is not but my syntax seems to be incorrect.

I have the following code:

const navBar = () => {

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

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

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

}

Upvotes: 2

Views: 650

Answers (1)

Dupocas
Dupocas

Reputation: 21297

The second element returned by useState is a setter. You can't just mutate the state. Try this:

const navBar = () => {

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

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

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

}

As pointed out in comments, toggleNav is unecessary:

const navBar = () => {

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


  return (
    <button onClick={() => setMenuOpen(!isMenuOpen)}>Toggle</button>
  )

}

Upvotes: 5

Related Questions