我无法在React中分离一个firebase监听器

时间:2018-04-21 21:06:39

标签: reactjs firebase firebase-realtime-database ecmascript-6

我想在卸载组件时分离侦听器,但找不到解决方案。卸载组件后,每当我进行更改时,我的浏览器控制台中都会显示结果。

数据库

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}}

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);        
}