1

我想在组件卸载后取消一些功能,因为它会导致内存泄漏我的代码看起来像这样

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 动作

4

1 回答 1

1

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

但是,您可以调度另一个操作来恢复状态更改或导致副作用。通常你会使用另一个库redux-observable,比如后者。

START_GRAPH_GET例如,您可以定义 3 个操作:CANCEL_GRAPH_GETFINISH_GRAPH_GET。在START您开始提取时,在CANCEL您取消任何未完成的提取时,一旦提取完成,您将分派FINISH并将结果保存在商店中。

为了呈现结果,您需要将react-redux连接与mapStateToProps函数一起使用。

CANCEL要取消卸载,如有必要,您只需调度一个操作。

由于您的代码根本没有显示与 Redux 相关的任何内容,因此我认为这里更一般的答案是合理的。

于 2019-09-02T23:45:40.433 回答