ReactのuseStateについて簡単にまとめてみます。
state・useStateについて
Reactのコンポーネント内で管理されるデータや状態のことをstateと呼び、その値が変わると自動的にUIが再レンダリングされるような仕組みが用意されています。
stateの例としては、ボタンのクリック毎にカウントアップしていくカウンターの値や、フォームに入力すると画面内の一部が更新される値などがあります。
useStateは、コンポーネント内でstateを管理するために使われるReactのフックです。
サンプルコード
例として、フォーム入力された数値の2倍をページ上に表示する実装で試してみます。
まずはうまくいかない例(useStateを使用しない例)です。
export default function Calculate() {
  let result;
  function handleChange(e) {
    const value = e.target.value;
    result = value * 2;
  }
  return (
    <div>
      <input
        type="number"
        onChange={handleChange}
      />
      <div>2倍の値:{result}</div>
    </div>
  )
}
onChangeイベントでresultの値を入力値の2倍に変更していますが、ページの表示には反映されません。
変数resultの値の変更はされていますが、その変更内容を元に再レンダリングがされていないためです。
うまくいかない場合のデモページ
次にuseStateを使ってみます。
useStateの定義は以下のように行います。
const [state, setState] = useState(initialState)
useState()の引数にはstateの初期値となる値を指定します。
また返り値は分割代入を利用して受け取っていて、1つ目が現在のstate変数で、2つ目がstate更新と再レンダリングを行う関数になります。
import { useState } from 'react';
export default function Calculate() {
  const [result, setResult] = useState(0);
  function handleChange(e) {
    const value = e.target.value;
    setResult(value * 2);
  }
  return (
    <div>
      <input
        type="number"
        onChange={handleChange}
      />
      <div>2倍の値:{result}</div>
    </div>
  )
}
1行目でuseStateをインポートした上で、4行目でuseStateの定義、8行目でstateの更新を行っています。
useStateを使用するデモページ
stateはコンポーネント内で独立しているため、他のコンポーネントには影響しません。
例えば前述のコンポーネントを以下のように2つ読み込み、片方のstateを変更した場合、もう一方のstateには影響がありません。
<Calculate /> <Calculate />

コメントが承認されるまで時間がかかります。