Я хочу отключить refb firebase, когда пользователь меняет вид в приложении с одной страницей. Когда пользователь меняет вид, я хочу получить новый ref для firebase, так как мне нужны только отфильтрованные данные, и каждое представление фильтрует разные данные.Реакция: Отключение refb firebase на компонентеWillUnMount
Проблема возникает, когда я изменяю представление и обновляю некоторые данные. Затем реагируют пожары следующее сообщение об ошибке:
Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op.
Эта ошибка ссылается на другой вид как он пытается обновить отключенный компонент. Это не должно произошло потому, что Закройте ref на компонентеWillUnMount.
В обоих видах я следующий код для получения нового реф:
componentDidMount() {
// I have declared this.ref on the constructor so I can call off() on componentWillUnMount
this.ref = firebase.database().ref().child('mainNode').orderByChild('someProperty').equalTo('someValue');
this.ref.on('value', (snap) => {
let values = [];
snap.forEach((child) => {
let value = child.val();
let key = child.key;
const valueWithKey = update(value, {$merge: {key}});
values.push(valueWithKey);
});
// This is the offending line
this.setState({data: values});
});
}
А вот мой componentWillUnMount код:
componentWillUnMount() {
this.ref.off();
// I have also tried goOffline()
}
Что я делаю неправильно?