我应该取消订阅这个听众吗?

时间:2021-05-02 23:57:06

标签: react-native listener

我有以下用于深层链接、动态链接侦听器的代码

class App extends Component {
  public async componentDidMount() {
    AppState.addEventListener("change", this.handleAppStateChange);

    Linking.addEventListener("url", deepLinkHandler);
    const deepLinkListener = firebase.dynamicLinks().onLink(this.handleListener);
  }

  public componentWillUnmount() {
    Linking.removeEventListener("url", deepLinkHandler);
  }

所以我不会删除“deepLinkListener”和 AppState 的监听器,可以吗? 或者如何删除它?

提前致谢...

1 个答案:

答案 0 :(得分:2)

<块引用>

所以我不会删除“deepLinkListener”和 AppState 的监听器,可以吗?

这里的一个潜在问题是,如果您多次挂载和卸载组件,您最终可能会遇到多个事件处理程序来处理同一事件。

<块引用>

所以我不会删除“deepLinkListener”和 AppState 的监听器,可以吗?

docs here 看,onLink 的返回值是监听器的取消订阅方法。

由于您使用的是类组件,因此您必须将该值存储为实例变量。然后您可以检查并调用 componentWillUnmount 上的方法。