###関数コンポーネントにおいて、setStateを行うハンドラを記述する方法。
タイトル通りです。
私は以下のように、setStateを行うハンドラを記述するため以下のようなコードを書きました。
react
1export default function Hoge() { 2 const [currPhoto, setCurrPhoto] =useState(0); 3 //....略 4 const clickHandler = (value)=> {//setState(hook)を行うハンドラ 5 setCurrPhoto(value); 6 }; 7 8 return( 9 //略 10 <button onClick={clickHandler(NEXT)}>Next</button> 11 ) 12}
しかしこれを実行すると以下のようなエラー文がでてしまいました。
Too many re-renders. React limits the number of renders to prevent an infinite loop.
このエラーはなんなのか?
調べるとどうやら関数コンポーネント直下にstate setterを置くと無限にループしてしまうことが原因だということがわかりました。
参考サイト↓
では関数コンポーネントにおいて、setStateを行うハンドラはどのように記述すればよいのでしょうか?
さきほどのサイトでは三項演算子を利用して解決しているようだったのですが、その解決策でいいのでしょうか?
その解決策でいい場合どうすれば私のコードに応用できるでしょう?ケースが違うので上手く当てはめることができませんでした。
またそもそもToo many re-renders.
の起きる原因の推測が間違っているかもしれないので、間違っている場合は教えていただけたら幸いです。
質問の要点がバラバラになってしまいましたが、どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。