2017-01-19 13 views
0

反応ルータでは、リンクをレンダリングする代わりにコンポーネントにスクロールするように指定できますか?現時点では、コンポーネントは一度にすべてレンダリングされます(わずかに長いページで)。私はナビゲーションバーを持っており、ユーザーがナビのリンクをクリックして適切なコンポーネントにスクロールアップ/スクロールするときに好きです。反応ルータでの動作へのスクロール

+0

をあなたは本当に '反応-router'を、このために必要です? – shriek

+0

@shriek私は実践のために** react-router **を実装しました。そして、それを使ってこれを達成する簡単な方法があると思いました。 – Manu

答えて

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> 
関連する問題