Gra*_*aul 23 javascript reactjs react-router
我正在更新我的通用react redux应用程序以使用react router v4.我在主布局路线下有嵌套路线.以前我使用{props.children}来显示子路径的内容,但这不再起作用了.这在V4中如何工作?
<Provider store={store} key="provider">
<div>
<Route component={Layout} />
<Switch>
<Route path="/" component={HomePage} />
<Route component={Error404} />
</Switch>
</div>
</Provider>
Run Code Online (Sandbox Code Playgroud)
要么
<Provider store={store} key="provider">
<Layout>
<Route path="/" component={HomePage} />
<Route component={Error404} />
</Layout>
</Provider>
Run Code Online (Sandbox Code Playgroud)
这就是我的Layout文件的外观
const Layout = props => (
<div className="o-container">
<Header />
<main>
{props.children}
</main>
<Footer />
</div>
);
Run Code Online (Sandbox Code Playgroud)
Dez*_*Dez 30
我把它<Provider>拿出来是因为它属于react-redux你并且你不需要它作为路由的基础react-router(无论如何你可以很容易地添加它用它封装结构).
在React Router V4中,Router已经重命名BrowserRouter并从包中导入的内容react-router-dom.因此,对于嵌套路线,您需要将其作为您的孩子插入<Layout>.
index.js
import { Switch, Route } from 'react-router';
import { BrowserRouter } from 'react-router-dom';
import Layout from './Layout';
...
const Root = () => (
<Layout>
<BrowserRouter>
<Switch>
<Route exact path="/" component={HomePage} />
<Route path="/other" component={OtherComponent} />
<Route component={Error404} />
</Switch>
</BrowserRouter>
</Layout>
);
ReactDOM.render(
<Root/>,
document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)
Layout.js
import React from 'react';
import Header from './Header';
import Footer from './Footer';
const Layout = props => ({
render() {
return (
<div className="o-container">
<Header />
<main>{props.children}</main>
<Footer />
</div>
);
}
});
export default Layout;
Run Code Online (Sandbox Code Playgroud)
记住这只适用于网络.本机实现不同.
我上传了一个基于Create React App 的小项目,我在V4中展示了嵌套路由的实现.
loQ*_*loQ 16
我以为我必须分享这个.如果您在Link组件中使用Header组件.上面的答案是行不通的.你必须BrowserRouter再次作为父母来支持Link.像这样:
<BrowserRouter>
<Layout>
<Switch>
<Route exact path="/" component={HomePage} />
<Route path="/other" component={OtherComponent} />
<Route component={Error404} />
</Switch>
</Layout>
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27590 次 |
| 最近记录: |