@WhatYouDoing

Как записать значение в state?

Как записать значение при didMount из async storage в state?
constructor(props) {
    super(props);
    this.state = {
      access_token: '',
    };
  }

  componentDidMount() {
    AsyncStorage.getItem('access_token').then(value => {
      this.setState({access_token: value});
    });

    console.log(this.state.access_token);
  }
  • Вопрос задан
  • 173 просмотра
Решения вопроса 2
miraage
@miraage
Старый прогер
Видимо, у Вас есть пробел в асинхронной модели JS.
В Вашем случае, происходит примерно следующее:
--- internal tick
- componentDidMount
- asyncStorage.getItem
- console.log // на этот момент мы ещё не попали в then
--- internal tick
- then блок
- setState


Чтобы прочитать токен, нужно либо:
- передать callback вторым параметром в setState, который вызовется после того, как state обновился, и там уже вызывать console.log
- вызвать consoe.log в componentDidUpdate
Ответ написан
Комментировать
Aetae
@Aetae Куратор тега JavaScript
Тлен
Ответ на ваш вопрос: вы и так это делаете, всё в порядке.
Ответ на вопрос "как прочитать значение из state после записи при didMount" дал Mikhail Osher.:)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 14:10
500 руб./за проект
19 апр. 2024, в 13:31
10000 руб./за проект