[英]Limit Firebase rerenders with React Hooks
I have a Firebase Realtime Database and I want to display the records by mapping a list.我有一个 Firebase 实时数据库,我想通过映射列表来显示记录。
So far I have:到目前为止我有:
useEffect(() => {
dbRefObject.on('value', snap => getRecords(snap.val()))
}, [dbRefObject, records])
And elsewhere I have:在其他地方我有:
export const dbRefObject = firebase.database().ref().child('record');
My getRecords() function is:我的 getRecords() function 是:
const getRecords = (snap) => {
let _recordsMap= []
for (let record in snap) {
_recordsMap.push({[record] : snap[record]})
}
I want some kind of behaviour like an unsubscribe() function returned by the useEffect, but I can't get this to work?我想要某种行为,例如 useEffect 返回的 unsubscribe() function,但我无法让它工作?
useEffect(() => {
const unsubscribe = () => {dbRefObject.on('value', snap => getRecords(snap.val()))}
return () => {
unsubscribe()
}
}, [dbRefObject, records])
you need to call dbRefObject.off("value", originalCallback);你需要调用 dbRefObject.off("value", originalCallback);
check https://firebase.google.com/docs/database/admin/retrieve-data#section-detaching-callbacks检查https://firebase.google.com/docs/database/admin/retrieve-data#section-detaching-callbacks
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.