if文の二重判定
Q&A
Closed
前提
Reactでニュースアプリを作成しています.本文を取得し,画面に出力しようと考えています.しかし,同じページの情報を何度も取得するのはよろしくないと思い,ローカルストレージを使って保存しようと考えています.
発生している問題・エラー
if (message !== "" && localStorage.getItem("sentence") === "") { // message, localStorageが空白の時
fetchData(); // データ取得
localStorage.setItem("sentence", answer); // 取得したデータをローカルストレージに保存
} else if(localStorage.getItem("sentence") !== null) { // localStorageがnullでないとき
setAnswer(localStorage.getItem("sentence")); // answerをセット
}
このとき
型 'string | null' の引数を型 'SetStateAction<string>' のパラメーターに割り当てることはできません。
型 'null' を型 'SetStateAction<string>' に割り当てることはできません。
上記のエラーが出ますが,nullはelse ifではじいていると思います.
下記のコードのように2重でnullをはじくように書き換えるとエラーがなくなりました.
if (message !== "" && localStorage.getItem("sentence") === "") {
fetchData();
localStorage.setItem("sentence", answer);
} else if (localStorage.getItem("sentence") !== null) {
let storedSentence = localStorage.getItem("sentence"); // 追加
if (storedSentence) { // 追加
setAnswer(storedSentence);
}
}
この違いを教えていただきたいです...