переменные локального хранилища повторно инициализируются при выходе из приложения - PullRequest
0 голосов
/ 23 мая 2019

что я хочу сделать, это показать диалоговое окно при открытии приложения, но я хочу ограничить это отображение переменной, хранящейся в локальном хранилище моего приложения.эта переменная инициализируется, когда я нажимаю на кнопку.Я объясню свой случай:

, когда я нажимаю на свою кнопку, я вызываю эту функцию, которая хранит данные в моем локальном хранилище, следующим образом:

  storeDate = async () => {
    try{
        await AsyncStorage.setItem('@key',true)
        }catch(e){
            alert("an error has occured when s")
        }
    } 

и в моем componentDidMount, в соответствии смоя переменная @key я отображаю мое диалоговое окно или нет, вот мой код для этого:

  componentDidMount(){

       // this alert is used to check my @key variable value
       alert(this.getData());

       if (this.getData() == true){
           this.setState({
            dialogVisible2:true
           });
       }
   }

вот моя функция getData:

   getData = async () =>{
    try{
        const value = await AsyncStorage.getItem('@key')
        if (value !== null){

            return  value;
        }
        return "undefined";
    }catch(e){
        alert("an error has occured when retrieving data")
    }
}

когда я закрываю приложениеи снова откройте его, оповещение возвращает мне следующий [объект Объект].

Может кто-нибудь сказать мне, где я не прав.

1 Ответ

0 голосов
/ 23 мая 2019

Функция componentDidMount запускается первой до получения данных из Asyncstorage, поэтому значение импортируется.

Таким образом, вы можете настроить componentDidMount как асинхронную систему.

async componentDidMount(){

      getdata  = await this.getData()
       alert(getdata);

       if (getdata === true){
           this.setState({
            dialogVisible2:true
           });
       }
   }
...