現在react上でダイアログ画面上のチェックボックスを使って、localStrageの更新をするプログラムを作成しています。
その仕様は次のとおりです。
(1)ダイアログ画面上のチェックボックスのチェックの有無(true or false)により、localStrageのvalueを切り替える(true or false)。
(2)ダイアログボックスのCancelボタンを押すと、チェックボックスのチェックの有無(true or false)によらず、localStrageのvalueは切り替えない。
(3)ダイアログボックスのUpdateボタンを押すと、チェックボックスのチェックの有無(true or false)をlocalStrageのvalueを設定された値(true or false)に切り替える。
そこで、コンストラクター上でthis.update変数を宣言して、その値がtrueの場合にlocalStrageのvalueを切り替え、その値がfalseの場合にlocalStrageのvalueをそのままにするというしくみにしました。そのしくみを実装したcomponentDidUpdate関数は次のとおりです。
javascript
1 componentDidUpdate(prevProps){ 2 if (this.update == true){ 3 for(let key in this.state ){ 4 window.localStorage.setItem(key, this.state[key]); 5 }; 6 } 7 }
ところが、this.update = falseにしても更新されてしまいます。これは、reactのライフサイクルによるものかもしれません。
どなたか問題点と解決策のわかる方お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。