2017-10-30 6 views
0

Ich verwende reagieren-Router v 4.2 und einige Probleme treffen. Es gibt zwei Komponenten:Aushängen und Montage zwischen Komponenten in React-Router v4.2

Erste ist:

class One extends React.Component { 
    componentWillMount() { 
    console.log('One mount'); 
    } 
    componentWillUnmount() { 
    console.log('One unmount'); 
    } 
    render() { 
    ... 
    } 
} 

zweite ist:

class Two extends React.Component { 
    componentWillMount() { 
    console.log('Two mount'); 
    } 
    componentWillUnmount() { 
    console.log('Two unmount'); 
    } 
    render() { 
    ... 
    } 
} 

Wenn ich die Seite von der Komponente ein bis zwei drehen. Und kehre zu Eins zurück. Ich würde erhalten:

Eine Halterung> One Aushängen> Zwei Halterung > Eine Halterung> Zwei Aushängen

Der eine wurde zuerst montiert unmontiert dann zwei. Es ist komisch! Dann habe ich versucht, die reagieren-Router zu ändern, das Problem v3.0.0 dann weg war! Also ich denke, es war das Problem in v4.2

+0

Das codepen Beispiel: https: //codepen.io/Chuckthwu/pen/JOoOVp?editors=1111 –

+0

Das codepen Beispiel in v2.0 (Das richtige Beispiel): https://codepen.io/Chuckthwu/pen/RjNxwv?editors=1111 –

Antwort

0

ich dieses Problem gelöst. Vielen Dank für Ernie Yang in Front-End-Community von Facebook: Link

Es einfach wechseln Komponente in Route wie hinzugefügt:

<Switch> 
    <Route path="/Two" component={Two} /> 
    <Route path="/One" component={One} /> 
</Switch> 

Der von Ernie Yang erstellt codepen: https://codepen.io/anon/pen/jaEKve?editors=1111

+0

Bitte nicht, dass Dies wird in React 16 nicht funktionieren, da 'componentWillUnmount' Async auslösen kann sehr. Mehr Informationen zu diesem hier: https://github.com/facebook/react/issues/11106. –

Verwandte Themen