javascript - 使用 React 从 Firebase 获取数据和更新的更好方法

标签 javascript reactjs firebase firebase-realtime-database

我有一个世界杯投注应用程序。它有 64 场比赛,每场比赛都有您的away_score 和 home_score,如下所示:

matches: {
    1: {
      name: 1,
      type: "group",
      home_team: 1,
      away_team: 2,
      home_result: ' ',
      away_result: ' ',
      date: "2018-06-14T18:00:00+03:00",
      stadium: 1,
      channels: [],
      finished: false,
      group: "a"
    },
    2: {...

我有一个名为 MatchesBuilder 的实体,它从 firebase 获取数据并设置状态。这个状态作为 props 传递给一个名为 GroupsBuilder 的实体,该实体有一个匹配列表。每次用户更新比赛的赌注时,都会更新 firebase 上的值。

 fetchMatches = async () => {
    const { firebaseApp, user } = this.props;
    await firebaseApp
      .database()
      .ref(`/pools/${this.props.pool.key}/users/${user.uid}/matches`)
      .once("value")
      .then(snapshot => {
        this.setState({
          matches: this.snapshotToArray(snapshot),
          isLoading: false
        });
      });
    await this.checkBettingStatus();
  };

在我的 Match 实体上,我有:

<TextField id={`${this.props.game.home_team}_home`}
type="number"
disabled={this.props.finishedTimeToBet}
value={this.props.game.home_result}
onChange={(e, game, type) =>
this.props.handleChangedResult(e, this.props.game, "home")
}
/>

它正在工作。但仅仅因为,我有一个方法可以更新 MatchesBuilder 上的状态(每次用户更改输入上的值时它都会重新加载所有数据)并再次作为 props 传递。

因此,每次我在 Textfield 上更新某些内容时,它都会调用一个函数并再次从 Firebase 获取数据。当然我有性能问题。

对于这个问题,您有什么更好的、更好的性能建议?

最佳答案

我不确定我是否正确理解了您的意思,但是使用“on”而不是“once”怎么样?这样,只要数据库中的节点发生变化,状态就会发生变化。

关于javascript - 使用 React 从 Firebase 获取数据和更新的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50426922/

相关文章:

node.js - Node JS 中是否也需要每个 React 库?

reactjs - 对 mousedown 和 touchstart 事件的 React TypeScript 类型”

android - Glide 不会显示来自 FIRebase Storage 的图像

javascript - 通过链接或按钮将传单 map 置于标记的中心

javascript - 使用 CSS3 动画的脉动传单标记

javascript - 在复选框类型中单击后选择文本框

reactjs - 如何设置由 Cypress 运行的浏览器中可用的 process.env 变量

javascript - 如何使用 raphael 图形使用 for 循环绘制由从小到大的矩形组成的塔?

javascript - FirebaseUI 登录完成后,Firebase token 如何传递到重定向网址?

android - 在 Android 上启用安全网设备检查 API 的具体步骤是什么