【问题标题】:Should I unsubscribe from this listener?我应该取消订阅这个听众吗?
【发布时间】:2021-05-02 23:57:06
【问题描述】:

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

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 的侦听器,可以吗? 或者如何删除它?

提前谢谢...

【问题讨论】:

    标签: react-native listener


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多