1
私は外部スクリプトファイルを共有するReactアプリを持っており、vanilla JSで全社的なヘッダーを構築しています。そのヘッダーには、それが呼び出されているアプリケーションのルートに動的にバインドされたロゴがあります(location.origin
)。React Router v4のReactアプリの外で履歴インスタンスにアクセスするにはどうすればよいですか?
import { browserHistory } from 'react-router';
function captureLogoClick() {
const logoLink = document.querySelector('#company-header .logo a');
if(logoLink) {
logoLink.addEventListener('click', (e) => {
e.preventDefault();
browserHistory.push('/');
});
} else {
// Resource hasn't loaded yet
setTimeout(captureLogoClick, 100);
}
}
captureLogoClick();
ではどのように、ルータV4(react-router-dom
)を反応させることができる:あなたがルートを設定しているところはどこでもbrowserHistoryへのアクセスが発生するため
クリックしてナビゲーションをキャプチャし、代わりにルータV3を反応させるの使用は、前にささいなましたコンポーネントのどこかでリスナーをバインドせずにprops.history
を使用してこれを実現しますか?
私はV4から '反応-ルータdom'を使用していることが明らかになっている必要があります - それは歴史の小道具受け入れるようにそれは見ていません: -/ – jfurfaro
[OK]を、代替手段を:ちょうどブラウザのネイティブウィンドウを使用します.history.pushState。ヒストリパッケージが提供する互換性が必要な場合は、 'createBrowserHistory()'だけで、どこにでもバインドしたり、反応ルータと共有したりすることなく心配する必要はありません。これは暗闇の中での一種のショットですが、試してみてください。私は*それが問題なく動作すると思う。 –
ネイティブ履歴は再レンダリングを開始しません。私は、ルータの歴史シングルトンにアクセスすることなく、それは動作しませんと思います – jfurfaro