我有一个 React Redux 应用程序,它将在多个 Firebase 端点上具有侦听器。这些侦听器将在应用程序的不同位置挂载和卸载,我打算根据数据库更改动态生成这些侦听器。
问题
- 是否可以查看
firebase
对象上的活动侦听器数? - 在下面的代码中,对实际
firebase
对象的引用是否正确var firebaseRef
?因此,所有侦听器实际上都在firebase
对象上,如果组件卸载而不调用.off()
? - 我应该担心有 ~10 个活跃听众吗?
- 有谁知道不在数据库引用上使用
.off()
是否会破坏代码?或者它会显着改变性能?
Firebase 文档将其挂载在 ComponentWillMount 中
componentWillMount: function() {
var firebaseRef = firebase.database().ref('todoApp/items');
this.bindAsArray(firebaseRef.limitToLast(25), 'items');
}
并在ComponentWillUnmount
时移除
componentWillUnmount: function() {
this.firebaseRef.off();
}
谢谢!
- 我可以查看 Firebase 对象上的活动侦听器数量吗?
没有 API 可以返回客户端中活动的侦听器数。但是您可以轻松地自己保留一个计数器。
- 在下面的代码中,对实际 Firebase 对象的引用是否正确
var firebaseRef
?因此,所有侦听器实际上都在 Firebase 对象上,如果组件卸载而不调用.off()
?
Reference
实际上只是有关数据库中某个位置的信息。把它们留在身边是非常便宜的。
- 我应该担心有 ~10 个活跃听众吗?
听众的数量没什么大不了的。您应该考虑的是正在读取的数据量。通常,我建议仅同步您(主动或频繁(向用户显示的数据。
- 有谁知道不在数据库引用上使用
.off()
是否会破坏代码?或者它会显着改变性能?
调用或不调用.off()
都不会破坏代码。但是,一旦您将侦听器附加到具有on()
的位置,该位置的数据将同步,直到您调用off()
。在整个应用中有大量挥之不去的侦听器可能会导致读取大量用户看不到的数据。