2016-04-11 3 views
0

Я пытаюсь подписаться с 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, 
     }); 
    }, 

Можете ли вы предложить мне способ решить эту проблему?

+0

Все кажется совершенно идеальным для меня: | – Mihir

ответ

0

Это объясняет, что происходит и как это исправить:

https://facebook.github.io/react/blog/2015/12/16/ismounted-antipattern.html

В основном вы получаете обновления после вас компонент был демонтирован. Вам необходимо использовать componentWillUnmount, чтобы отказаться от подписки на изменения от Meteor.

Смежные вопросы

 Смежные вопросы