2017-04-25 3 views
2

にmobxオートラン機能を解除する私は私のcomponentDidMountで、次のオートラン機能を持っている:componentWillUnmount

componentDidMount() { 
     this.autoUpdate = autorun(() => { 
      this.setState({ 
       rows: generateRows(this.props.data) 
      }) 
     }) 
    } 

問題は、コンポーネントが実装されていない場合、他のコンポーネントがthis.props.dataを変えることである - そしてそのための私を得ますマウントされていないコンポーネントに対する.setState警告。

コンポーネントのマウントが解除されたら、自動実行を削除したいと思います。

私がやってみました:

componentWillUnmount() { 
    this.autoUpdate = null 
} 

しかし、オートラン機能はまだ開始されます。コンポーネントがもうマウントされていない場合、mobxの自動実行をキャンセルする方法はありますか?

答えて

3

autorunは、キャンセルするために呼び出す必要があるディスポーザ機能を返します。

class ExampleComponent extends Component { 
    componentDidMount() { 
    this.autoUpdateDisposer = autorun(() => { 
     this.setState({ 
     rows: generateRows(this.props.data) 
     }); 
    }); 
    } 

    componentWillUnmount() { 
    this.autoUpdateDisposer(); 
    } 

    render() { 
    // ... 
    } 
} 
関連する問題