Hai*_*ien 4 reactjs react-router react-router-v4
我想切换Detail,Blog但仍保留Sidebar. 我使用下面的代码,但它不起作用。你能帮我改正吗?非常感谢。
const routes = (
<Switch component={App}>
<Route exact key="detailpost" path={CelestialSettings.path + 'posts/:slug'}
components={{main: Detail, sidebar: Popular, mainbottom: Categories}} />) }
/>
<Route exact key="listpost" path={CelestialSettings.path}
components={{feature:Featurex, main: Blog, sidebar: Popular, mainbottom: Categories}} />) }
/>
</Switch>
);
class App extends React.Component {
render () {
const {feature, main, sidebar, mainbottom } = this.props;
return (
<div>
<div className="container">
<div className="main-feature" id="main-feature">
{feature}
</div>
</div>
<div id="content" className="site-content">
<div className="container">
<div className="divcontainer">
<div id="po-homepage" className="content-area">
{main}
</div>
<aside id="secondary" className="sidebar widget-area">
<div className="popular_post" id="popular_post">
{sidebar}
</div>
</aside>
</div>
</div>
</div>
<div className="cat-list">
<div className="container">
<div className="thecategories" id="thecategories">
{mainbottom}
</div>
</div>
</div>
</div>
)
}
}
ReactDOM.render(
(routes),
document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
小智 7
要在多个路由中保持相同的侧边栏,您可以将侧边栏组件与 Switch 组件放在同一级别。粗略的例子:
const routes = (
<div>
<YourSidebar>
{/* ... */}
</YourSidebar>
<Switch component={App}>
<Route ... />
<Route ... />
{/* ... */}
</Switch>
</div>
);
Run Code Online (Sandbox Code Playgroud)
这样,React-Router 就不会重新渲染(或更新)侧边栏组件,而只会控制<Switch>.
| 归档时间: |
|
| 查看次数: |
3090 次 |
| 最近记录: |