【问题标题】:React Native Firebase Set UpReact Native Firebase 设置
【发布时间】:2018-03-26 17:39:32
【问题描述】:

我正在尝试在我的 react 本机应用程序中从我的 firebase 数据库中获取数据。

我已正确设置(据我所知),但是当应用程序呈现时,我看不到任何数据。

我有一个组件 FirebaseList.js

const firebaseConfig = {
  **Details**
};
firebase.initializeApp(firebaseConfig);

const data = [];

class FirebaseList extends Component {
  constructor(props) {
    super(props);

    this.ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });

    this.state = {
      listViewData: data,
    };
  }

  render() {
    return (
      <List
      dataSource={this.ds.cloneWithRows(this.state.listViewData)}
      renderRow={data =>
        <ListItem>
          <Text>{data}</Text>
        </ListItem>
      }
      />
    );
  }
}

我在别处调用此组件 - 我的导出设置正确,我的导入也是如此。

提前致谢。

【问题讨论】:

  • 您正在呼叫this.state = { listViewData: data, };,但没有在任何地方设置data
  • 我是否需要分配从数据库获取数据的请求?因为我在组件声明上方定义了数据。

标签: javascript firebase react-native firebase-realtime-database


【解决方案1】:

您应该在 componentDidMount() 中从 firebase 获取数据!

import firebase from 'firebase';
class FirebaseList extends Component {
  constructor(props) {
    super(props);

    this.ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });

    this.state = {
      listViewData: [],
    };
  }
  componentWillMount() {
    const firebaseConfig = {
    **Details**
    };
    firebase.initializeApp(firebaseConfig);
  }
  
  componentDidMount() {
    firebase.database().ref('/path/datas/').once('value', snapshot => {
      const dataArray = [];
      const yourDatas = snapshot.val();
      for(let data in yourDatas){
        dataArray.push(data)
      }
      this.setState({ listViewData: dataArray });
    })
  }

  render() {
    return (
      <List
      dataSource={this.ds.cloneWithRows(this.state.listViewData)}
      renderRow={data =>
        <ListItem>
          <Text>{data}</Text>
        </ListItem>
      }
      />
    );
  }
}

【讨论】:

  • 嗨,使用此代码并使用 .ref(/signposts) 引用我的数据库我在渲染时看不到任何数据。
  • 你试过.ref('signposts')吗?如果数据存在,您应该尝试console.log(snapshot.val()),您可能错误的数据处理。如果数据没有退出可能是路径错误或数据没有退出。
  • 我发现这是我的规则设置,我不允许未经身份验证从我的数据库读取权限。感谢您的帮助。
  • 很高兴听到这个消息。更多信息 .once() 的第三个参数是错误回调。你可以处理错误的情况。
猜你喜欢
  • 2021-02-06
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
相关资源
最近更新 更多