use*_*141 7 jsx reactjs react-router react-redux react-router-redux
我一直在尝试将Redux集成到我的应用程序中,并且使用React-Router-Redux 5.0.0-alpha.6遇到了问题.
我收到错误:'react-router-redux'中找不到"export'syncHistoryWithStore'.官方指南说导入syncHistoryWithStore,我已经完成了:https: //github.com/reactjs/react-router-redux
我也查看了react-router-redux包里面,似乎没有任何syncHistoryWithStore的迹象.
我错过了什么?
这是我的index.js.Redux正在工作,但我无法使用ConnectedRouter推送一条新路线,显然这是由于浏览器的历史问题.
import React from 'react';
import { render } from 'react-dom'
import { Provider } from 'react-redux';
import { Route } from 'react-router'
import { ConnectedRouter, routerReducer, routerMiddleware, syncHistoryWithStore, push } from 'react-router-redux'
import createHistory from 'history/createBrowserHistory'
const store = configure();
const history = syncHistoryWithStore(createBrowserHistory(), store);
const navigation = (
<Provider store={store}>
<ConnectedRouter history={history}>
<SystemManager>
<div>
<Route path="/" component={Dashboard}/>
<Route path="/dashboard" component={Dashboard} />
.....
<Route component={NotFound} />
</div>
</SystemManager>
</ConnectedRouter>
</Provider>
);
injectTapEventPlugin();
render(navigation, document.getElementById('app'));
Run Code Online (Sandbox Code Playgroud)
包装版本:
react-redux: "^5.0.4",
react-router: "^4.1.1",
react-router-dom: "^4.1.1",
react-router-redux: "^5.0.0-alpha.6",
Run Code Online (Sandbox Code Playgroud)
对于遇到相同问题的任何人,我将发布我的工作index.js 文件(注意:我已留下我的自定义组件和减速器以供进一步指导)。
syncHistoryWithStore我现在没有使用。我使用插件history/createBrowserHistory并为 ConnectedRouter 创建历史记录。到目前为止一切似乎都正常..
我使用 Redux DevTools,还使用节点环境在开发和生产模式之间切换。
显然没有提供保修。
import React from 'react'
import ReactDOM from 'react-dom'
import { createStore, combineReducers, applyMiddleware, compose } from 'redux'
import { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';
import { Provider } from 'react-redux'
import createHistory from 'history/createBrowserHistory'
import { Route, Switch } from 'react-router'
import { ConnectedRouter, routerReducer, routerMiddleware } from 'react-router-redux'
import injectTapEventPlugin from 'react-tap-event-plugin';
import menu from './reducers/menu';
import permissions from './reducers/permissions';
import sitePreferences from './reducers/sitePreferences';
import user from './reducers/user';
// Custom Page Container Imports (these are the visual layout components)
import SystemManager from './containers/systemManager/systemManager';
import LoginPage from './containers/pages/login-page/';
import NotFound from './containers/pages/not-found/not-found';
// Create a history of your choosing (we're using a browser history in this case)
const history = createHistory()
// Build the middleware for intercepting and dispatching navigation actions
const middleware = routerMiddleware(history)
const isProduction = process.env.NODE_ENV === 'PRODUCTION';
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
// Redux: Store creation and middleware application based on production/development mode
// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
let store = null;
if (isProduction === true) {
store = createStore(
combineReducers({
menu,
permissions,
sitePreferences,
user,
routerReducer
}),
compose(applyMiddleware(middleware))
);
} else {
store = createStore(
combineReducers({
menu,
permissions,
sitePreferences,
user,
routerReducer
}),
composeWithDevTools(applyMiddleware(middleware))
);
}
injectTapEventPlugin(); // Material UI
ReactDOM.render(
<Provider store={store}>
{ /* ConnectedRouter will use the store from Provider automatically */ }
<ConnectedRouter history={history}>
<SystemManager>
<Switch>
<Route path="/dashboard" component={NotFound} />
<Route path="/login" component={LoginPage} />
</Switch>
</ SystemManager>
</ConnectedRouter>
</Provider>,
document.getElementById('app')
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4907 次 |
| 最近记录: |