0
反応ルータでは、リンクをレンダリングする代わりにコンポーネントにスクロールするように指定できますか?現時点では、コンポーネントは一度にすべてレンダリングされます(わずかに長いページで)。私はナビゲーションバーを持っており、ユーザーがナビのリンクをクリックして適切なコンポーネントにスクロールアップ/スクロールするときに好きです。反応ルータでの動作へのスクロール
反応ルータでは、リンクをレンダリングする代わりにコンポーネントにスクロールするように指定できますか?現時点では、コンポーネントは一度にすべてレンダリングされます(わずかに長いページで)。私はナビゲーションバーを持っており、ユーザーがナビのリンクをクリックして適切なコンポーネントにスクロールアップ/スクロールするときに好きです。反応ルータでの動作へのスクロール
少しの助けを借りてthis post hereから私の問題を解決することができました。彼はES6を使用しています
、それのES5バージョンは次のようになります。あなたは関数宣言ではなく、関数式を使用している場合
const hashLinkScroll = function() {
const {hash} = window.location;
if (hash !== '') {
const milliseconds = 0;
setTimeout(function() { // eslint-disable-line prefer-arrow-callback
const id = hash.replace('#', '');
const element = document.getElementById(id);
if (element) {
element.scrollIntoView();
}
}, milliseconds);
}
}
気をつけてください。後者は、呼び出される前に定義されていなければなりません。
は、ルータとして、あなたのようなものがあります:これは単にあなたのアンカータグにフラグメント識別子( `#`)によって達成することができるよう
<Router history={browserHistory} onUpdate={hashLinkScroll}>your routes go here</Router>
をあなたは本当に '反応-router'を、このために必要です? – shriek
@shriek私は実践のために** react-router **を実装しました。そして、それを使ってこれを達成する簡単な方法があると思いました。 – Manu