卸载后取消Redux操作

时间:2019-09-02 22:36:28

标签: reactjs redux react-lifecycle

我想在组件卸载后取消某些功能,因为这会导致内存泄漏,我的代码如下所示

componentDidUpdate(prevProps) {
    if (prevProps.org.org !== this.props.org.org && this.mounted) {
      this.props.clearGraph();
      this.props.graphGet(this.props.org.org);
      this.setState({ org: this.props.org.org });
    }
  }
  componentDidMount() {
      const abox = "a" + this.props.org.org.substr("1");
      this.props.getHistory(abox);
      this.props.graphGet(this.props.org.org);
  }
  componentWillUnmount() {
  }

我只想取消graphGet这是一个redux操作

1 个答案:

答案 0 :(得分:1)

您不能通过设计取消Redux操作。一旦它们被分派,它们将由减速器处理并执行状态转换。

但是,您可以调度另一个操作来还原状态更改或引起副作用。通常,您会为redux-observable使用另一个库。

例如,您可以定义3个动作:START_GRAPH_GETCANCEL_GRAPH_GETFINISH_GRAPH_GET。在START上开始抓取,在CANCEL上取消所有未完成的抓取,一旦抓取完成,便分派FINISH并将结果保存在存储中。

要呈现结果,您需要使用react-reduxmapStateToProps函数进行连接。

要取消卸载,您仅在需要时调度CANCEL操作。

由于您的代码根本不显示与Redux相关的任何内容,因此我认为在此提供更笼统的答案是合理的。