@ckatala

Как сохранить state в localstorage ssr await/async?

Скажите как правильно сохранить состояние в localstorage srr
У меня есть блок который по умолчанию открыт. Если его скрыть, то при обновлении страницы он открывается и после сразу же скрывается! Как сделать чтоб он не раскрывался при обновлении страницы

state = {
    closed: false
  }

componentDidMount() {
    if (localStorage.getItem('state')) {
      this.setState({ ...JSON.parse(localStorage.getItem('state')) })
    }
  }

componentDidUpdate() {
    if (this.state.closed === true) {
      document.body.classList.add('block-closed')
    } else {
      document.body.classList.remove('block-closed')
    }
  }
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
@abberati
frontend-разработчик
localStorage синхронный. Почему бы не использовать значение из него при инициализации стейта?

componentDidUpdate() {
    if (this.state.closed === true) {
      document.body.classList.add('block-closed')
    } else {
      document.body.classList.remove('block-closed')
    }
  }

Вот так не надо делать. Вот так надо делать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы