2017-09-22 6 views
1

他のページをリフレッシュするときにメインページにリダイレクトする必要があります。ページリフレッシュのためのイベントリスナーを追加しようとしました。しかし、それは動作しませんと私はRouter.js?cf42:125 Uncaught RangeError: Maximum call stack size exceededブラウザで持っています。このエラーに対処する方法を教えてください。React js他のページをリフレッシュしようとするとメインページにリダイレクト

import {browserHistory} from 'react-router'; 

class MyComponent extends React.Component { 
    constructor(props, context) { 
     super(props, context); 
     this.onUnload = this.onUnload.bind(this); 
    } 

    componentDidMount() { 
     window.addEventListener('beforeunload', this.onUnload); 
    } 

    componentWillUnmount() { 
     window.removeEventListener('beforeunload', this.onUnload); 
    } 

    onUnload() { 
     browserHistory.push('/'); 
    } 

    render() { 
     ... 
    } 
} 

UPD:RangeErrorが固定されています。今すぐMyComponentのページはメインページにリダイレクトされますが、その後は再び開きます。私はリダイレクトがページの更新を止めないので、これが起こると思います。

答えて

0

あなたはonUnload()をバインドする必要があります - あなたのコンストラクタに次の行を追加します。

this.onUnload = this.onUnload.bind(this); 

あなたが反応-ルータやご自宅のコンポーネントを使用している場合はまた、リスナーのための正しいイベント名はonbeforeunload

+0

これは役に立たなかった:C – MyName

+0

これはどうにかして回答を確認する必要がある –

0

ですパスは/

onUnload() { 
    this.context.router.push('/'); 
} 

ルートファイルが正しいことを確認してください。

const routes = (
<Route path="/" component={App}> 
<IndexRedirect to="/home" component{Home}/> 
    //all other routes 
</Route> 
) 
関連する問題