Как я могу присвоить значение асинхронного хранилища непосредственно состоянию - PullRequest
0 голосов
/ 02 марта 2019

Мне нужно что-то вроде ниже, но я не могу получить значение

state = {
  phone: async () => await AsyncStorage.getItem('phone')
}

constructor(props){
  super(props)
  alert(this.state.phone);
}

, но это не работает.

Я знаю, если вызвать его внутри componentDidMount, а затем передать значение в состояние, это работает, но мне нужно что-то вроде выше.

1 Ответ

0 голосов
/ 02 марта 2019

Это работает:

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

import { AsyncStorage } from 'AsyncStorage';

class App extends Component {

  state = {};

  constructor(props) {
      super(props);
  }

  componentDidMount(){
      this.getItem().then((phone)=>{
        this.setState({
          phone
        });
      })
  }

  async getItem(){
    return await AsyncStorage.getItem('phone');
  }

  async setItem(){
    await AsyncStorage.setItem('phone','919303580');
  }

  render() {
    return (
      <div className="App">
        <p>Phone here:</p>
        {this.state.phone && <p>{this.state.phone}</p>}
        <button onClick={this.setItem.bind(this)}>Click me</button>
      </div>
    );
  }
}

export default App;
...