前提・実現したいこと
初歩的な質問をお許しください。。
addEventListenerでクリックイベントを行いたい。
発生している問題・エラーメッセージ
const n = document.getElementById('countUp');
上記のコードをLikeButton()関数や外に記述したらエラーになります。
グローバル変数はどこからでも取得できると思うのですが、なぜuseEffect()の中に記述しないと動作しないのかがわかりません。
TypeError: Cannot read property 'addEventListener' of null
該当のソースコード
React
1import { useState, useEffect } from 'react'; 2 3const n = document.getElementById('countUp'); 4 5const LikeButton = () => { 6 const [count, counter] = useState(0); 7 8 const Counter = () => { 9 counter(count + 1); 10 } 11 12 13 useEffect(() => { 14 n.addEventListener('click',()=>{ 15 Counter() 16 }); 17 }); 18 19 return ( 20 <> 21 <button id='countUp'>Counter: {count}</button> 22 </> 23 ); 24 25} 26 27export default LikeButton;
試したこと
useEffect(() => { const n = document.getElementById('countUp'); n.addEventListener('click',()=>{ Counter() }); });
上記のようにコードの記述場所を変更したら動作確認できました。
どうぞよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/24 09:37