Back to Freecodecamp

Step 10

curriculum/challenges/english/blocks/workshop-toggle-text-app/67cd57e96257ed1fabbe4879.md

latest2.6 KB
Original Source

--description--

NOTE: A useEffect hook was added to call the handleToggleVisibility function when the component renders. You will learn more about the useEffect hook in a future lesson and workshop.

Now would be a good time to see the updated isVisible value.

Below the setIsVisible(!isVisible);, log the isVisible state variable to the console.

Open up the console and you will notice that the value is not what you expected it to be.

--hints--

You should use console.log to log the isVisible state variable to the console.

js
assert.match(code, /console\.log\(\s*isVisible\s*\)/);

--seed--

--seed-contents--

html
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>Toggle Visibility</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.development.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.development.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/7.26.5/babel.min.js"></script>
  <script 
    data-plugins="transform-modules-umd"
    type="text/babel"
    src="index.jsx"
  ></script>
  <link rel="stylesheet" href="styles.css" />
</head>
<body>
  <div id="root"></div>
  <script
    data-plugins="transform-modules-umd"
    type="text/babel"
    data-presets="react"
    data-type="module"
  >
    import { ToggleApp } from "./index.jsx";
    ReactDOM.createRoot(document.getElementById("root")).render(<ToggleApp />);
  </script>
</body>
</html>
css
body {
  font-family: Arial, sans-serif;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f4f4f4;
}

#toggle-container {
  text-align: center;
  background: white;
  padding: 20px;
  border-radius: 10px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

#toggle-button {
  padding: 10px 20px;
  border: none;
  background: #007BFF;
  color: white;
  border-radius: 5px;
  cursor: pointer;
  transition: background 0.3s ease;
}

#toggle-button:hover {
  background: #0056b3;
}

#message {
  margin-top: 20px;
  font-size: 1.125rem;
  color: #333;
}
jsx
const { useState, useEffect } = React;

export const ToggleApp = () => {
  const [isVisible, setIsVisible] = useState(false);

  --fcc-editable-region--
  const handleToggleVisibility = () => {
    setIsVisible(!isVisible);

  }
  --fcc-editable-region--

  useEffect(() => {
    handleToggleVisibility(); 
  }, [])

  return (
    <div id="toggle-container">
      <button id="toggle-button">Message</button>
      {isVisible && <p id="message">I love freeCodeCamp!</p>}
    </div>
  );
};