私はリアクションルータv4.0で簡単なアプリを持っています。 ホームと約リンクを押して適切なルートをページに表示します。リアクションルータは、アクティブリンクを押している間にアンマウントコンポーネントを保持します。
私はすでにアクティブホームリンク2倍以上をクリックしたときに気づい - ホームコンポーネントが予期しない動作で再マウントするたびに取得します。
これは、Router
に直接は入っていないが、ラッパー関数App
にある場合にのみ発生します。例:https://codesandbox.io/s/wwnxxqy4m5(プレスホームリンクとコンソールログを確認してください)
const Root =() => (
<Router>
<App />
</Router>
);
私はRouter
コンポーネントHome
に直接ルートを置く場合は毎回アンマウントではありません。
const Root =() => (
<Router>
<div>
<ul>
<li><NavLink to="/">Home</NavLink></li>
<li><NavLink to="/about">About</NavLink></li>
</ul>
<hr/>
<Route exact path="/" component={withRouter(Home)}/>
<Route path="/about" component={withRouter(About)}/>
</div>
</Router>
);
誰もがラッパー関数を使用する場合ホームのアンマウントを強制されている理由、アイデアを持っていますか?
感謝を作成していません。 withRouter - この場合、単純化された理由のためです。現実世界のアプリでは、コンポーネント= {RequireAuth(Home)}で使用しているRequireAuth高次関数があります。 「新しいインスタンスが作成されるたびに」というステートメントに同意したいと思いますが、理由が説明されていません。ルートがアプリケーションなしでルートに直接使用されても、この動作は発生しません。 –
起こるが、同じことがこのgithubの問題で言及されている:https://github.com/ReactTraining/react-router/issues/4630 –