、私はそれをすることを取る何あなたが欲しいです。
複数のスクロール可能なセクションを持つ1ページ。
利用可能性ブラウザナビゲーションスクロール位置にブックマークを付ける。
これを行うには、まずページの外観を指定する必要があります。一度にすべての要素をレンダリングする必要があるので、このようなものにする必要があります。
Container = React.createClass({
render: function(){
return <div>
<Home/>
<Contact/>
<Work/>
<About/>
</div>;
}
});
ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}>
<BrowserRouter>
<div className='app-container'>
<Nav />
<Route path='/' component={Container} />
</div>
</BrowserRouter>
</Provider>,
document.querySelector('#app')
);
次に、複数のパスを含むようにルータを更新しますが、それぞれは同じ出力を表示します。
ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}>
<BrowserRouter>
<div className='app-container'>
<Nav />
<Route path='/contact' component={Container} />
<Route path='/work' component={Container} />
<Route path='/about' component={Container} />
<Route path='/' component={Container} />
</div>
</BrowserRouter>
</Provider>,
document.querySelector('#app')
);
最後に、我々は、onEnter
がidで、指定されたHTML要素にスクロールする各経路にトリガ設定しました。
ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}>
<BrowserRouter>
<div className='app-container'>
<Nav />
<Route path='/contact' component={Container}
onEnter={function(){
document.getElementById("contact_id").scrollIntoView();
}
}
/>
<Route path='/work' component={Container}
onEnter={function(){
document.getElementById("work_id").scrollIntoView();
}
}
/>
<Route path='/about' component={Container}
onEnter={function(){
document.getElementById("about_id").scrollIntoView();
}
}
/>
<Route path='/' component={Container}
onEnter={function(){
document.getElementById("home_id").scrollIntoView();
}
}
/>
</div>
</BrowserRouter>
</Provider>,
document.querySelector('#app')
);
対応するHTML要素に適切なIDが設定されていることを確認してください。すべて設定する必要があります。
ReactRouterは、おそらくあなたが使いたいツールではありません。これは明示的にuriの間をナビゲートするためのもので、リアクションを使ってフロントエンドで管理されます。異なる要素へのリンクをスクロールするだけであれば、例のすべてがそのまま動作します。 – gravityplanx
私はあまりにも動作するようにURLを持っていたいと思っています。私が/ aboutに行くと、私は 'about'セクションに向かいます。 – doctopus