![見出し画像](https://assets.st-note.com/production/uploads/images/73358143/rectangle_large_type_2_f9152c6605c15763e070cec81a05c68b.png?width=1200)
React Hooks + TypeScriptによるUseEffect(条件付き)の使い方
はじめに
React Hooks + TypeScriptによる基礎学習の UseEffect(条件付き) のアウトプットになります。
UseEffect の使い方を書き留めます。
前回学習したReact Hooks + TypeScriptによるUseEffectの続きからになります。
学習に使用した教材・参考資料
ゴール
同じボタンをクリック、テキストを入力しても、useEffectの設定条件により処理が異なることを確認。
以下のように、ボタンをクリックするとコンソールにクリック数がカウントされ、テキストを入力するとコンソールに入力数がカウントされる。
![](https://assets.st-note.com/production/uploads/images/73358827/picture_pc_0bec30902504e8e4a9fe9d77e346d08e.gif?width=1200)
ボタンをクリックするとクリック数がコンソールにカウントされるが、テキストを入力してもコンソールには反映されない。
![](https://assets.st-note.com/production/uploads/images/73358834/picture_pc_473f7598a468c209848f1d778ad978c8.gif?width=1200)
学習手順
1. BasicUseEffect.tsxに新しくuseState、input を追加する
2. 動作確認
3. useEffectの第二引数に条件を追加
4. 動作確認
1. BasicUseEffect.tsxに新しく useState、<input> を追加する
前回作成した、BasicUseEffect.tsx に以下の useState と <input> を追加する。
# BasicUseEffect.tsx
import React, {useState, useEffect} from 'react'
const BasicUseEffect = () => {
const [count, setCount] = useState(0)
const [item, setItem] = useState('') //<-- useState関数を追加
useEffect(() => {
console.log("useEffect invoked")
})
return (
<div>
<button onClick={()=> setCount(prevCount=>prevCount+1)}>Click {count}</button>
<input type='text' value={item} onChange={evt=>setItem(evt.target.value)}/> //<-- <input> を追加
</div>
)
}
export default BasicUseEffect
2. 動作確認
localhost:3000 に接続して以下のようにボタンをクリックして、コンソールにカウントされ、テキストを入力して入力数がカウントされれば成功。
![](https://assets.st-note.com/production/uploads/images/73359494/picture_pc_c2d394e868bb7db5e2566b9e59cf4959.gif?width=1200)
3. useEffectの第二引数に条件を追加
useEffectの第二引数に ,[count] を追加した。
これで、テキストを入力してもコンソールに入力数が処理されないようになる。
# BasicUseEffect.tsx
import React, {useState, useEffect} from 'react'
const BasicUseEffect = () => {
const [count, setCount] = useState(0)
const [item, setItem] = useState('')
useEffect(() => {
console.log("useEffect invoked")
},[count]) //<-- ,[count]を追加
return (
<div>
<button onClick={()=> setCount(prevCount=>prevCount+1)}>Click {count}</button>
<input type='text' value={item} onChange={evt=>setItem(evt.target.value)}/>
</div>
)
}
export default BasicUseEffect
4. 動作確認
再度確認、useEffect の第二引数を追加したのでボタンをクリックしてもコンソールの処理は変わらないが、テキストを入力してもコンソールでは処理がされてないことが確認できる。
![](https://assets.st-note.com/production/uploads/images/73359747/picture_pc_28dfdc64c25513f2a9fe75db47e01225.gif?width=1200)
おわりに
useEffect(条件付き)の学習でした。
次回はuseEffect(Cleanup)についてです。