4.6 Loading Username
講義
lsが空の場合は、フォームを表示してから、今やっていることをすることができます.ただしlsにユーザ情報があればformを表示できません.
では、まずlsにユーザー情報があるかどうかを確認します.
まずlsデータをすべて削除します.
コンソール上のローカルストレージ.getItem(「username」)を入力するとnullが出力されます.「username」がずっと出ているようなので変数として指定します.
=>stringエラーが発生する可能性があります!変数として指定すると、エラーが発生したときに未定義の変数が通知されるので、変数として指定することを忘れないでください. しかし、私たちの元の登録方式は最初から出てきて、登録方式と挨拶を隠すようにしていました.
コードはできるだけ繰り返しを減らすべきで、簡潔で明瞭に書いたほうがいいです!(๑•̀きょうどう́)و✧
lsが空の場合は、フォームを表示してから、今やっていることをすることができます.ただしlsにユーザ情報があればformを表示できません.
では、まずlsにユーザー情報があるかどうかを確認します.
まずlsデータをすべて削除します.
コンソール上のローカルストレージ.getItem(「username」)を入力するとnullが出力されます.
const savedUsername = localStorage.getItem("username");
if(savedUsername === null){
//show the form
} else{
// show the greetings
}
これでいいです.=>stringエラーが発生する可能性があります!変数として指定すると、エラーが発生したときに未定義の変数が通知されるので、変数として指定することを忘れないでください.
<form class="hidden" id="login-form">
今更新しても何も表示されません.const USERNAME_KEY = "username";
const savedUsername = localStorage.getItem(USERNAME_KEY);
if(savedUsername === null){
loginForm.classList.remove(HIDDEN_CLASSNAME);
loginForm.addEventListener("submit",onLoginSubmit);
} else{
greeting.innerText = `Hello ${savedUsername}`;
greeting.classList.remove(HIDDEN_CLASSNAME);
}
もういいよ!!終わったと思ったが、ちょっとした問題があった.const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
const greeting = document.querySelector("#greeting");
const HIDDEN_CLASSNAME = "hidden";
const USERNAME_KEY = "username";
function onLoginSubmit(event){
event.preventDefault();
loginForm.classList.add(HIDDEN_CLASSNAME);
const username = loginInput.value;
localStorage.setItem(USERNAME_KEY,username);
greeting.innerText = `Hello ${username}`; <---- 중복
greeting.classList.remove(HIDDEN_CLASSNAME); <---- 중복
}
const savedUsername = localStorage.getItem(USERNAME_KEY);
if(savedUsername === null){
loginForm.classList.remove(HIDDEN_CLASSNAME);
loginForm.addEventListener("submit",onLoginSubmit);
} else{
greeting.innerText = `Hello ${savedUsername}`; <---- 중복
greeting.classList.remove(HIDDEN_CLASSNAME); <---- 중복
}
コード全体で重複する部分を関数にしたほうがいいと思います.コードはできるだけ繰り返しを減らすべきで、簡潔で明瞭に書いたほうがいいです!(๑•̀きょうどう́)و✧
function paintGreetings(username){
greeting.innerText = `Hello ${username}`;
greeting.classList.remove(HIDDEN_CLASSNAME);
}
完了したコードconst loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
const greeting = document.querySelector("#greeting");
const HIDDEN_CLASSNAME = "hidden";
const USERNAME_KEY = "username";
function onLoginSubmit(event){
event.preventDefault();
loginForm.classList.add(HIDDEN_CLASSNAME);
const username = loginInput.value;
localStorage.setItem(USERNAME_KEY,username);
paintGreetings(username);
}
function paintGreetings(username){
greeting.innerText = `Hello ${username}`;
greeting.classList.remove(HIDDEN_CLASSNAME);
}
const savedUsername = localStorage.getItem(USERNAME_KEY);
if(savedUsername === null){
loginForm.classList.remove(HIDDEN_CLASSNAME);
loginForm.addEventListener("submit",onLoginSubmit);
} else{
paintGreetings(savedUsername);
}
初めてサイトに入ると、名前を入力するヒントが表示されます.名前を入力すると、Hellominiはlsに格納されているため、リフレッシュしてもHellominiが出力されます.Reference
この問題について(4.6 Loading Username), 我々は、より多くの情報をここで見つけました https://velog.io/@kangmin01/4.6-Loading-Usernameテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol