Я использую vanilla JS и хочу сохранять данные на localStorage при обновлении страницы:
Main.js
localStorage.setItem("language", "ar");
const toEnglish = (e) => {
if (e.target.closest(".english")) {
localStorage.setItem("language", "en");
}
};
document.addEventListener("click", (e) => toEnglish(e));
Однако после установки language на en на localStorage, если страница обновляется, значение сбрасывается на ar, интересно, почему оно не сохраняет значение, как в reactJS?
if (!localStorage.getItem("language")) localStorage.setItem("language", "ar")
вы можете установить ar
по умолчанию, только если значение еще не установлено
Я вижу, на самом деле не думал об этом после решения большой проблемы, немного устал
Это происходит потому, что при каждой загрузке страницы вы меняете язык на ar
Вам нужно проверить, установлен ли язык
if (!localStorage.getItem("language")) {
localStorage.setItem("language", "ar");
}
const toEnglish = (e) => {
if (e.target.closest(".english")) {
localStorage.setItem("language", "en");
}
};
document.addEventListener("click", (e) => toEnglish(e));
Основываясь на вашем коде, похоже, что вы устанавливаете значение language на 'ar' каждый раз, когда загружается страница, чтобы обойти это, проверив, имеет ли localStorage значение, установленное для language, попробуйте следующее:
const language = localStorage.getItem('language');
// check if language is not set
if (!language) {
localStorage.setItem("language", "ar");
}
// The rest of your code
Добавлен дополнительный код, который может заставить ваш код работать.
const secondaryLanguage = localStorage.getItem("language-secondary");
localStorage.setItem("language", secondaryLanguage ?? "ar");
const toEnglish = (e) => {
if (e.target.closest(".english")) {
localStorage.setItem("language-secondary", "en"); //change the key
}
};
document.addEventListener("click", (e) => toEnglish(e));
Это происходит потому, что при каждой загрузке страницы вы меняете язык на ar