javascript - 连接反应路由器和办公室用户界面结构反应
问题描述
Github上的相关帖子
目前,我很难在我的 react-redux 应用程序中正确使用这两个库。
我的代码如下所示:
index.js
import { Provider } from 'react-redux';
import { ConnectedRouter } from 'connected-react-router';
...
ReactDOM.render(
<Provider store={store}>
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
</Provider>,
rootElement
);
应用程序.js
...
export default () => (
<Layout>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/test" component={Test} />
</Switch>
</Layout>
);
布局.js
...
export default function Layout(props) {
return (
<div class="ms-Fabric">
<div class="ms-Grid-row">
<div class="ms-Grid-col ms-lg2">
<Navigation />
</div>
<div class="ms-Grid-col ms-lg10">{props.children}</div>
</div>
</div>
);
}
导航.js
import React from 'react';
import { withRouter } from 'react-router-dom';
import { Nav } from 'office-ui-fabric-react';
export default withRouter(({ history }) => (
<div className="ms-NavExample-LeftPane">
<Nav
onLinkClick={(event, element) => {
event.preventDefault();
history.push(element.url);
}}
groups={[
{
links: [
{
name: 'Home',
url: '/',
key: 'home'
},
{
name: 'Test',
url: '/Test',
key: 'test'
}
]
}
]}
/>
</div>
));
但是,当我运行应用程序时,它会显示You should not use <Route> outside a <Router>
. 导航肯定在 中ConnectedRouter
,而且看起来这个路由器与react-router
v4 配合得很好,所以我不知道如何处理这个问题。
有人可以给我一个建议吗?
解决方案
您项目的架构:Provider > ConnectedRouter > App > Layout (have NavLink) > Switch > Routes
您必须以这种方式构建架构:Provider > ConnectedRouter > routes file > Switch > Routes > Layout in component
// index.js
import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
import { ConnectedRouter } from 'connected-react-router';
import routes from 'routes/index';
import store from 'store/configureStore';
render(
<Provider store={store}>
<ConnectedRouter history={history}>
{routes}
</ConnectedRouter>
</Provider>,
document.getElementById('root'),
);
// routes.js
const routes = (
<Switch>
<Route exact path="/" component={Home} />
<Route path="/test" component={Test} />
</Switch>
);
export default routes;
推荐阅读
- php - 使用来自 html 表单的值的 PHP 计算将不起作用
- asp.net-core-3.0 - 应用程序在 IIS 进程内运行,但未配置为使用 IIS 服务器 .NET Core 3.0
- python - PyMySQL 使用 localhost 与套接字不连贯的行为
- python - 在熊猫数据框中对唯一的连续项目对进行排序
- angular - 多个持久服务实例
- javascript - 如何在不使用变换的情况下保持左上角倾斜?
- ruby - 为什么要在继承自 Ruby 模块的类的初始化方法中使用块调用“super”?
- regex - 捕获可能捕获组的内容
- python - SideInput I/O 会影响性能
- apache-spark - 如何在 Jupyter notebook 中使用 Kafka 数据源?