我有一个React Redux应用程序,它将在多个Firebase端点上拥有侦听器。这些侦听器将在应用程序的不同位置安装和卸载,我打算根据数据库更改生成动态。
问题
firebase
对象上的活动侦听器数量吗?var firebaseRef
是对实际firebase
对象的引用是否正确?因此,所有侦听器都在firebase
对象上,并且如果组件在未调用.off()
的情况下卸载,则不会被销毁?.off()
会破坏代码吗?或者它会显着改变性能?The Firebase Documentation has it mounted in ComponentWillMount
componentWillMount: function() {
var firebaseRef = firebase.database().ref('todoApp/items');
this.bindAsArray(firebaseRef.limitToLast(25), 'items');
}
并在ComponentWillUnmount
componentWillUnmount: function() {
this.firebaseRef.off();
}
谢谢!
答案 0 :(得分:3)
- 我可以查看firebase对象上活动侦听器的数量吗?
醇>
没有API可以返回客户端中活动的侦听器数。但你可以轻松自己保留一个柜台。
- 在下面的代码中,
醇>var firebaseRef
是对实际firebase对象的引用是否正确?因此,所有侦听器都在firebase对象上,如果组件卸载而未调用.off()
,则不会被销毁?
Reference
实际上只是有关数据库中某个位置的信息。保持它们是非常便宜的。
- 我应该担心有10个活跃的听众吗?
醇>
听众的数量并不是什么大问题。您应该考虑的是您正在阅读的数据量。一般情况下,我建议只将您所显示的数据(主动或频繁)同步到用户。
- 有人知道如果不在数据库引用上使用
醇>.off()
会破坏代码吗?或者它会显着改变性能?
是否调用.off()
不会破坏代码。但是,将听众附加到on()
的位置后,该位置的数据将会同步,直到您拨打off()
为止。在您的应用中拥有大量挥之不去的倾听者可能会导致您阅读大量用户无法看到的数据。