2

I am trying to understand the useState hook in React. When the below component renders for the first time, it prints 0. When I click Button2, it prints 1. Now, when I click button1, after pressing button2, why is the App component being rendered again even though I am passing the same value? However when I click the button2 again, the component is not re-rendered again.

<script type="text/babel" defer>
const {useState} = React;

function App() {
  const [val, setVal] = useState(0);
  console.log(val);
  const clickHandler1 = () => {
    setVal((prevState) => prevState);
  }
  const clickHandler2 = () => {
    setVal((prevState) => prevState + 1);
  }
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Edit to see some magic happen!</h2>
      <button onClick={clickHandler1}>Button 1</button>
      <button onClick={clickHandler2}>Button 2</button>
    </div>
  );
}

ReactDOM.render(<App />, document.body);

</script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>

0 Answers0