javascript - 在刷新来自 firebase 的新数据之前清除 react 状态字段

标签 javascript reactjs firebase redux react-redux-firebase

enter image description here

屏幕截图来自控制台中的 State.Firestore.ordered.trainings。假设 exampleA.js 有以下代码

firestoreConnect([
    {
      collection: "trainings",

  ])

而exampleB.js有以下代码

 firestoreConnect([
    {
      collection: "trainings",
      orderBy: ["dateTime", "asc"],
      where:[["trainingName","==","abc123"]]

    }
  ])

当我第一次加载 exampleA.js 时,训练数据是从数据库 (Firestore) 中随机加载的,如图上部突出显示的那样。

但是,当我转向 exampleB.js 时,我需要按日期时间的升序加载训练数据,并按图像底部所示的 trainingName 进行过滤。

问题是当它加载exampleB.js时,数据的随机顺序会先渲染一段时间(因为它们已经在之前加载exampleA.js时的state.firestore.ordered.training中),在呈现过滤数据的排序/升序之前。

这确实会给用户带来糟糕的交互体验,我不知道如何解决。每次移动到新页面时,有什么方法可以删除/清除 state.firestore.ordered 中的数据吗?或者有没有办法延迟渲染直到 state.firestore.unordered.data 完全更新?提前致谢!

最佳答案

如果您已经在示例 A 中获取了数据,那么在客户端对现有数据进行排序比为完全相同的数据发出新的网络请求更有意义。对于这种情况,我建议执行客户端 sort()reduce()(如果您只想要数据的子集,例如只需要名为 abc123 的项目,则减少)。

关于javascript - 在刷新来自 firebase 的新数据之前清除 react 状态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59118317/

相关文章:

javascript - 尝试更新和删除多个位置时未调用/触发返回的 Pomises Angular Firebase Web api

firebase - flutter 和 Firebase : Send File as Image

javascript - 使用搜索动态隐藏 div

javascript - 如何更改站点主体元素的背景以与幻灯片放映相对应?

javascript - AngularJs 函数形式未定义

reactjs - 如何使用 typescript 重用 redux 工具包中的 reducer ?

reactjs - 如何在 React 中重构我的 App.js 页面路由?最好的做法是什么?

javascript - 如何使用 Firebase 运行 cron 作业?

javascript - 将逗号添加到 javascript 计数计时器

ios - 在React Native中获取``PhotoEditorSDK/PhotoEditorSDK.h''文件未找到错误