0

我正在尝试在我的 firebase 查询中使用来自 asyncStorage 的值。

我感觉被困在这上面了。我尝试了异步/等待,然后尝试/捕获。

不知道我应该怎么做。

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');
  }
4

1 回答 1

0

我已经从构造函数转移到反应生命周期,它工作正常。如果有人需要,这是代码。

  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);
      });
  }
于 2017-04-12T10:22:19.257 回答