热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Firebase与React结合在无限循环中返回

我想将Firebase与ReactHooks结合使用。数据结构的想法是:首先从firebase数

我想将Firebase与React Hooks结合使用。数据结构的想法是:


  • 首先从firebase数据库中获取所有数据

  • 从此数据创建状态对象,以便您可以将此数据向下传递到组件

  • 创建对象后,我想在数据库上添加所有观察者。

  • 当数据库中发生更改时,该对象将被更新并
    再次发送组件

  • 在组件中,将使用withMemo检查道具中的数据是否已更改(如果更改,将重新呈现组件)

现在的问题是当将一个新项添加到表之一(因此已调用child_added函数)并且在child_added函数内部时,将更新对象,它将在无限循环中创建。发生这种情况是因为状态对象导致文件的重新呈现,然后运行child_added函数来更新状态对象,依此类推。
当前代码是:

/** Child Once */
listner.child('widgets').once('value',onValue).then(() => {});
/** Child Changed */
listner.child('widgets').on('child_changed',onValueChange);
/** Child Added */
listner.child('widgets').endAt().limitToLast(1).on('child_added',onValueAdded);

onValueAdded函数:

/** onValueAdded */
const OnValueAdded= function(dashboard) {
//Function thats updating the widgetData object
updateWidgetData(dashboard.val(),dashboard.key,userId);
//Updating the object resulting in a loop
setWidgetDataInit(prevState => {
return { ...prevState,...widgetData };
});
};

因此,在设置setWidgetDataInit状态后,文件将重新加载并将更新对象传递到子组件(如果更改了prop值,则会导致子组件更新)

问题是如何在不创建无限循环的情况下更新对象状态,而是在新添加的项上设置Firebase观察程序,因此可以将对象状态内的新数据发送到子组件,并在以下情况下重新渲染





推荐阅读
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 详解react组件通讯方式(多种)
    这篇文章主要介绍了详解react组件通讯方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着 ... [详细]
  • ReactJSUIAnt设计空组件原文:https://w ... [详细]
  • #ReactivityFundamentals#DeclaringReactiveState ... [详细]
  • react项目无法编译2.npm错误信息: ... [详细]
  • syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率. ... [详细]
  • 用React.jsEgg.js造轮子全栈开发旅游电商应用百度网盘最后附上下载链接百度网盘下载链接:链接:https:pan.baidu.coms1X0RBk0Gb ... [详细]
  • React 新版文档网站开始公测
    react,新版,文档, ... [详细]
  • iOS安全攻防(二十四):敏感逻辑的保护方案(1)Objective-C代码容易被hook,暴露信息太赤裸裸,为了安全,改用C来写吧!当然不是全部代码都要C来写,我指的是敏感业务逻 ... [详细]
  • 查看全部数据库表参照地址:https:www.cnblogs.comzhoulixiangblogp12078724.html本文所用数据库表:prod_idvend_idprod ... [详细]
author-avatar
爱-雨轩_627
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有