使用componentWillUnmount()离开组件时不执行的方法

时间:2017-03-07 08:28:49

标签: reactjs components

我需要检查Facebook的到期日期和我输入两个不同组件的当前日期。 DashboardPages。两者都有:

componentWillMount() {
  const { linkedAccount, clearLinkedAccounts, getFacebookPages } = this.props
  const now = moment().format('YYYY-MM-DD HH:mm:ss')

  if (linkedAccount) {
    if (now < linkedAccount.expiresIn) {
      getFacebookPages()
    } else {
      clearLinkedAccounts()
    }
  }
}

componentWillUnmount() {
  const { linkedAccount, clearLinkedAccounts } = this.props
  const now = moment().format('YYYY-MM-DD HH:mm:ss')

  if (linkedAccount && now > linkedAccount.expiresIn) {
    clearLinkedAccounts()
  }
}

但是只有在手动刷新页面时,才会通过运行clearLinkedAccounts()执行componentWillMount,但在离开之前,它不会。如果有必要,我希望在进入另一条路线之前执行它。

1 个答案:

答案 0 :(得分:0)

刷新页面不像是从同一个应用程序上下文中的页面转到另一个页面。 React router允许您在具有Link标记的React单个应用中从一个页面转到另一个页面。这就是为什么反应路由器如此有用!

当您点击链接转到另一个Link的网页时,React单个应用仍然有效。因此,componentWillUnmount将被调用,因为单个应用程序能够卸载组件。

刷新页面(F5)时,会加载新页面。结果,整个现有的单个应用程序被删除并提供给浏览器垃圾收集器。在这种情况下,您无法控制React组件。所以不可能调用componentWillUnmount,因为根本没有其他组件。