取消componentWillUnmount上的mobx自动运行功能

Mih*_*šič 5 javascript reactjs mobx mobx-react

我的componentDidMount中有以下自动运行功能:

componentDidMount() {
        this.autoUpdate = autorun(() => {
            this.setState({
                rows: generateRows(this.props.data)
            })
        })
    }
Run Code Online (Sandbox Code Playgroud)

问题是当组件未挂载时,另一个组件会更改this.props.data - 因此我在未安装的组件上收到.setState警告.

所以我想在组件卸载后删除自动运行.

我试过做:

componentWillUnmount() {
    this.autoUpdate = null
}
Run Code Online (Sandbox Code Playgroud)

但是自动运行功能仍会触发.一旦组件不再安装,有没有办法取消mobx自动运行?

Tho*_*lle 8

autorun 返回您需要调用的处理器函数以取消它.

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

  componentWillUnmount() {
    this.autoUpdateDisposer();
  }

  render() {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)