我想在卸载组件时分离侦听器,但找不到解决方案。卸载组件后,每当我进行更改时,我的浏览器控制台中都会显示结果。
数据库
export default class Example extends React.Component {
constructor(props) {
super(props);
this.groupListener = database.groupUpdate(this.props.group.id, (result) => {
console.log(result);
}).bind(this);
}
componentWillUnmount() {
this.groupListener = null;
}
render() {
....
}
}
组件
{{1}}
答案 0 :(得分:1)
要停止使用on('child_changed'
附加的聆听者,请在同一参考或查询上致电off('child_changed'
。
所以:
componentWillUnmount() {
firebase.database().ref('groups/').child(id).off('child_changed');
}
或者,如果您只想取消注册您在此代码中共享的特定侦听器:
componentWillUnmount() {
firebase.database().ref('groups/').child(id).off('child_changed', groupUpdate);
}