无法使用响应本机使用状态从Firebase Firestore数据库获取数据

时间:2020-01-25 03:30:24

标签: javascript firebase react-native google-cloud-firestore

我正在构建一个React Native应用程序,需要将Firebase Firestore数据库中的所有用户数据放入一个列表。我不确定如何使用所有更新的React本机代码执行此操作,因为所有其他堆栈溢出问题都无法回答此问题,并且我在其他地方也找不到任何帮助。 我用于获取React本机数据的代码是:

state = {
    data: []
  };

  unsubscribe = null;

  componentDidMount() {
    const user = this.props.uid || Fire.shared.uid;
    const list = [];

    this.unsubscribe = Fire.shared.firestore
      .collection("users")
      .doc(data)
      .onSnapshot(doc => {
        list.push(data);
      });

      this.setState({
            data: list
      )};
  }

  componentWillUnmount() {
    this.unsubscribe();
  }

数据库结构是用户具有名称和电子邮件。我尝试通过键入:“ {this.state.name.email}”来调用它,它在Flatlist中不起作用。我已经在另一个文件中初始化了我的应用程序,其中Fire.shared = new Fire();。已导出。如果能提供有关如何将此类数据正确导出到该州的帮助,我将不胜感激。预先谢谢你!

1 个答案:

答案 0 :(得分:0)

setState的调用需要在回调中,因此:

componentDidMount() {
  const user = this.props.uid || Fire.shared.uid;
  const list = [];

  this.unsubscribe = Fire.shared.firestore
    .collection("users")
    .doc(data)
    .onSnapshot(doc => {
      list.push(data);
      this.setState({
        data: list
      )};
    });
}