2017-03-07 1 views
0

2つの異なるコンポーネントを入力すると、Facebookの有効期限と現在の日付をチェックする必要があります。 DashboardおよびPages。どちらも、このている:手動でページを更新する場合にのみcomponentWillUnmount()を使用してコンポーネントを終了するときにメソッドが実行されない

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を実行することによって、実行されますが、それを離れる前に、それはしていません。私は必要に応じて別のルートに入る前にそれを実行したい。

+0

反応ルータコードも指定できますか? –

答えて

0

ページを更新することは、同じ単一のアプリコンテキスト内で別のページに移動するようなものではありません。 React routerは、Linkのようなタグを持つReact single app内でページ間を移動することができます。それは反応ルータがとても有用である理由です!

Linkで別のページに移動するリンクをクリックすると、React single appはまだアクティブです。その結果、単一のアプリケーションがコンポーネントをアンマウントできるので、componentWillUnmountが呼び出されます。

ページ(F5)を更新すると、新しいページが読み込まれます。その結果、既存の単一のアプリケーション全体が削除され、ブラウザのガベージコレクタに渡されます。その場合、あなたはReactコンポーネントを制御できません。 componentWillUnmountに電話をかけることは不可能です。これ以上のコンポーネントはまったくありません。

関連する問題