Вы можете хранить некоторые данные (около 5 МБ, но проверьте здесь ) в браузере, используя объект localStorage или sessionStorage.
Используя localStorageобъект, данные, хранящиеся в браузере, не имеют срока действия.
Однако вы должны помнить, что просмотр с использованием сеанса «инкогнито» очистит данные, когда будет закрыта последняя «личная» вкладка.
В этом посте не рассматриваются различия между localStorage и sessionStorage , но полезно их знать.
Это то что тебе нужно знать.
Вы можете сохранить данные localStorage, используя следующий синтаксис
localStorage.setItem(variableKey, variableValue);
Вот пример, когда мы сохраняем объект в хранилище.
// Create an object
const userData = {
job: "Programmer",
skills: [
{ id: 4200, name: "Angular" },
{ id: 3000, name: "React" },
{ id: 8080, name: "Vue" },
],
};
// Store the object into storage
localStorage.setItem("userData", JSON.stringify(userData));
Как узнать, работает ли это? Пытаясь прочитать данные, которые вы только что сохранили.
// Retrieve the object from the storage
const data = localStorage.getItem("userData");
console.log("data: ", JSON.parse(data));
Наконец, вы можете удалить данные из localStorage.
Есть два пути: removeItem()и clear().
При использовании removeItem()вы удаляете только значения, связанные с ключом, который вы передаете, например, 'userData'в приведенном ниже примере.
localStorage.removeItem('userData');
localStorage.clear();
Как сообщается на MDN , localStorageданные специфичны для протокола документа.
Что это значит?
Это означает, что для каждого URL-адреса браузер , скорее всего, создаст новую «корзину» , в которой будут храниться данные.
Скажем, вы работаете с HTML и JS на своем ноутбуке. Когда вы открываете HTML-файл в браузере, URL-адрес будет выглядеть примерно так:
file:///C:/Users/John/webProjects/appName/localStorage.html
В моем случае, несмотря на изменение частей URL-адреса, localStorageкажется, что он возвращает тот же объект.
Что изменилось в React?
Немного! Мы можем использовать один и тот же код JavaScript для хранения и извлечения данных из localStorage. Помните useEffect!
Один шаг за раз.
Когда у вас есть объект, вы можете сохранить его и получить следующим образом:
function App() {
localStorage.setItem("userData", JSON.stringify(userData));
const data = localStorage.getItem("userData");
console.log("data: ", JSON.parse(data));
return (...)
}
React регистрирует один и тот же объект дважды из-за метода жизненного цикла компонента.
Поскольку и монтирование, и обновление запускают рендеринг, код внутри вашего компонента выполняется дважды.
В моем случае есть файл console.log, App()поэтому он запускается при монтировании компонента и при его обновлении.
Когда вы работаете с побочными эффектами в React, вы можете использовать useEffect.
Код становится:
function App() {
localStorage.setItem("userData", JSON.stringify(userData));
useEffect(() => {
const data = localStorage.getItem("userData");
console.log("data: ", JSON.parse(data));
}, []);
return (...)
}
Кроме того, помните, что если у вас есть React.StrictModeобертка вокруг вашего Appкомпонента, React будет рендериться дважды.
Как сообщается на StackOverflow , StrictModeрендерит компоненты дважды (при разработке, но не в продакшене), чтобы обнаружить любые проблемы с вашим кодом и предупредить вас о них (что может быть весьма полезно).
Перейти index.jsи удалить React.StrictMode, если необходимо.
// index.js
...
root.render(
<React.StrictMode> // remove this
<App />
</React.StrictMode> // and this!
);
Что изменилось в Angular?
Немного! Мы можем использовать один и тот же код JavaScript для хранения и извлечения данных из localStorage.
В следующем примере я добавляю код в AppComponent.
Все происходит внутри ngOnInit.
export class AppComponent implements OnInit {
userData = { ... }
ngOnInit() {
localStorage.setItem('userData', JSON.stringify(this.userData))
const data = localStorage.getItem('userData')
console.log('data: ', JSON.parse(data))
}
}
localStorage.setItem(key, value)localStorage.getItem(key)JSON.stringify(value)JSON.parse(value)useEffectдля борьбы с побочными эффектами. Возможно, вам придется удалитьReact.StrictMode
В современном быстро меняющемся и конкурентном мире карьера играет важную роль в личностном росте, финансовой стабильности и общей удовлетворенности жизнью. Однако многие люди оказываются в безжалостном цикле застоя и неудовлетворенности, постепенно угасая в своей профессиональной жизни.
Мы часто обнаруживаем, что изо всех сил пытаемся реализовать то, что, как мы знаем, полезно для нас. От того, чтобы сказать значимому другому, что мы любим его, до того, чтобы помнить, что нужно говорить как пират, всегда будут те, кто утверждает, что день, неделя или месяц событий не нужны, потому что они уже делают эти вещи.
В современном гиперсвязанном мире системы СМИ играют ключевую роль в формировании общественного мнения и, следовательно, в демократическом принятии решений. В своем глубоком анализе политической экономии коммуникации ученый Роберт МакЧесни бросает вызов общепринятому мнению и представляет то, что он называет «пятью истинами» о СМИ.
Это ярко-золотое утро в холмистой местности на западе, когда первые лучи солнечного света освещают инеистую траву на равнинах. Стадо безмятежных ангусских коров, угольно-черных и массивных, вырисовывается на фоне восхода солнца, когда они идут по проторенной тропе к месту, которое они все хорошо знают; барная стойка.
Если мы хотим продолжать процветать на этой планете, нам придется вести опасные разговоры. Те, которые бросают вызов тому, что мы сделали, что мы делаем и что мы в настоящее время собираемся продолжать делать (или планируем делать).
Это поражает меня Внезапно, как это часто бывает, Это снова и снова на полпути <Нет, не то, что в Тихом океане, ты темно-бордовый, то, что на карнавале> Каждый громкий заголовок…..