Я пытаюсь подписаться с react-native
на номер meteor
с помощью ddp
драйвера. Во время componentDidMount
, это дает мне исключениеReact Native - может обновить только смонтированный или монтажный компонент
Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op.
Это мой код
getInitialState: function() {
return {
dataSource: new ListView.DataSource({
rowHasChanged: (row1, row2) => !_.isEqual(row1, row2),
}),
loaded: false,
};
},
componentDidMount: function() {
console.log('component mounted');
console.log(this.props['actor']);
ddp.initializeWithSubscribe(() => {
ddp.subscribe('select-all-meals-by-restaurant', [this.props['actor']['obj']['_id']]);
});
var ddpClient = ddp.connection;
var observer = ddpClient.observe('meals');
observer.added =() => this.updateRows(_.cloneDeep(_.values(ddpClient.collections.meals)));
observer.changed =() => this.updateRows(_.cloneDeep(_.values(ddpClient.collections.meals)));
observer.removed =() => this.updateRows(_.cloneDeep(_.values(ddpClient.collections.meals)));
},
/*------------------------------------------------------------------------------
* Util function for watching data
*-----------------------------------------------------------------------------*/
updateRows: function(rows) {
console.log('rows :' + rows);
this.setState({
dataSource: this.state.dataSource.cloneWithRows(rows),
loaded: true,
});
},
Можете ли вы предложить мне способ решить эту проблему?
Все кажется совершенно идеальным для меня: | – Mihir