今回はステートフックについて学習。
フックとは何か?
フックという言葉はよく聞くが、一体ナニモノなのか?
まずは、Wiki先生に聞いてみる。
フック(英: hook)は、プログラム中の特定の箇所に、利用者が独自の処理を追加できるようにする仕組みである。また、フックを利用して独自の処理を追加することを「フックする」という。
処理を追加できる箇所は、元のプログラムの開発者によって、あらかじめ決められている。
ふむ。なるほど。
Reactには、React独自のフックがいくつかあるが、その中でもステータスを扱うのが「useState」。
昔はstateを扱うときは、クラスに変換してなんたらかんたらしていたけど、React 16.8から、簡単にstateを扱うことができるステートフック(useState)ができたらしい。
まずは使ってみよう。(今回は、ボタンをクリックすると、クリックした回数がカウントアップして、クリックごとにクリック回数をどんどんリストにしていくよ!)
今回の出来上がりイメージはこんな感じ。
■関連サイト
インポート
importして、useStateを使うよ!を主張。
import { useState } from 'react';
変数宣言
クリックされた回数をカウントしておく count変数と、その回数をリストにした配列 arr を宣言。
export default function App() { const [count, setCount] = useState(0); const [arr, setArr] = useState([]);
変数の一つ目は、ステータスなどの状態を持ったもので、2つ目はその変数を更新する関数。
useStateの引数に初期値を設定する。
constはクリックされた回数なので、初期値は0、配列はクリックされた回数をリストにしていくので、初期値は空にしておく。
変数(state)の参照
これはすごく簡単。そのまま、count と arr で読み出せばOK。
<h2>{count}</h2> {arr.map((val) => ( <h2 key={val}>{val}</h2> ))}
全体像はこんな感じ
import './styles.css'; import { useState } from 'react'; export default function App() { const [count, setCount] = useState(0); const [arr, setArr] = useState([]); const handleCountUp = () => { const arrCount = count + 1; setCount(arrCount); const newArr = [...arr]; newArr.push(arrCount); setArr(newArr); }; const handleResetCount = () => { setCount(0); setArr([]); }; return ( <div id="App"> <h1>React useState動作確認用</h1> <div id="use_state01"> <h2>{count}</h2> <button onClick={handleCountUp}> ここをクリックするとカウントされます </button> <button onClick={handleResetCount}>カウンタリセット</button> </div> <div id="use_state02"> <p> <br /> </p> <p>クリックしてカウンタが更新されると配列が更新されます</p> {arr.map((val) => ( <h2 key={val}>{val}</h2> ))} </div> </div> ); }