Запрос Firebase с асинхронным хранилищем

Я пытаюсь использовать значение из asyncStorage в моем запросе firebase.

Я чувствую себя застрявшим на этом. Я пробовал с async / await, потом попробовал / поймать.

Не знаю, как мне это сделать.

constructor(props) {
    super(props);
    this.state = {
      dataSource: new ListView.DataSource({
        rowHasChanged: (row1, row2) => row1 !== row2,
      }),
    };

    const user = firebase.auth().currentUser;
    if (user != null) {
      AsyncStorage.getItem('parentUid')
        .then((data) => {
          this.setState({ pUID: data });
        });
      this.itemsRef = this.getRef().child(`Stores/${this.state.pUID}/`);
    } else {
      Alert.alert('Error', 'login again!');
    }
    this.connectedRef = firebase.database().ref('.info/connected');
  }

person André    schedule 08.04.2017    source источник


Ответы (1)


Я перешел от конструктора к жизненному циклу реакции, и он работает нормально. Если кому-то нужно, вот код.

  componentWillMount() {
    AsyncStorage.getItem('parentUid')
      .then((data) => {
        this.setState({ pUID: data }, () => {
          this.itemsRef = this.getRef().child(`Stores/${this.state.pUID}/`);
        });
      })
      .then(() => {
        this.connectedRef.on('value', this.handleValue);
      });
  }
person André    schedule 12.04.2017