When I pass function parameter to useState() like this:
const [testA, setTestA] = useState(returnTestA());  // run every rendering
const [testB, setTestB] = useState(returnTestB); // run only mount
- function with () is run every rendering
- but function without () is run only first rendering(mount)
It is my whole code: (info.js)
import React, { useState } from "react";
let count = 0;
const returnTestA = () => {
  count++;
  console.log("test A: " + count);
  return "test";
};
const returnTestB = () => {
  count++;
  console.log("test B: " + count);
  return "test";
};
const Info = () => {
  const [name, setName] = useState("");
  const [testA, setTestA] = useState(returnTestA());  // run every rendering
  const [testB, setTestB] = useState(returnTestB); // run only mount
  const onChangeName = e => {
    setName(e.target.value);
  };
  return (
    <div>
      <div>
        <input name="name" value={name} onChange={onChangeName} />
      </div>
      <div>
        <div>
          <b>Name:</b> {name}
        </div>
      </div>
    </div>
  );
};
export default Info;
the result is:
Why It happened?? And what is the best practice?


 
     
     
    