代码之家  ›  专栏  ›  技术社区  ›  kenny

绑定和移除反应中事件的准确位置

  •  1
  • kenny  · 技术社区  · 8 年前

    我在中添加了事件侦听器 componentWillMount 把它移到 componentWillUnMount 是的。

    这样地

    componentWillMount() {
        store.on("onSuccess", this.onSuccess);
    }
    
    componentWillUnMount() {
        store.removeListener("onSuccess", this.onSuccess);
    }
    

    但组件在单击按钮时加载到dom中。实际上这个组件有一个标志。每次我单击一个按钮,标志设置为true,并且 组件将安装 接到电话。但当旗子设为假时, componentWillUnmount 即使组件不在dom中也不会被调用。

    所以,当我再次单击按钮组件时,如果我发出一个事件,监听器将被触发两次。我认为这是因为旧组件仍然存在,并且仍然监听事件。

    所以我只想知道,什么地方是真正的远程监听器。

    1 回复  |  直到 8 年前
        1
  •  1
  •   falinsky Giri Dharan    8 年前

    看来你只是在 componentWillUnMount() 生命周期方法。应该是 componentWillUnmount() 相反(用较低的 m )中。

    其他信息:

    在较新版本的 React componentWillMount 生命周期方法成为遗留的(并重命名为 UNSAFE_componentWillMount() )并将在 React 17 是的。建议使用 componentDidMount() 而不是用于这种目的的生命周期方法。(请参阅有关 legacy lifecycle methods 是的。