1. react-router 3 中的 useRouterHistory(createHistory) :
依赖: react-router,redux-simple-router
作用:useRouterHistory is a history enhancer that configures a given createHistory factory to work with React Router. This allows using custom histories in addition to the bundled singleton histories. It also pre-enhances the history with the useQueries and useBasename enhancers from history. useRouterHistory是一个history增强器,它将给定的createHistory工厂配置为使用React Router。 这允许使用除了捆绑的单例(单例模式:一个类只能有一个实例存在,并且只返回一个对象)历史之外的自定义历史。 它还通过历史记录中的useQueries和useBasename增强器预先增强了历史history用法:src => store => index.jsimport createHistory from 'history/lib/createHashHistory'
import {useRouterHistory} from 'react-router' import {syncHistory} from 'redux-simple-router' export const history = useRouterHistory(createHistory)({queryKey: false}); export const reduxRouterMiddleware = syncHistory(history); export default function configureStore(preLoadedState) { return createStore( rootReducer, preLoadedState, applyMiddleware(..., reduxRouterMiddleware, ...) ) }src => main.js
import configureStore, {history, reduxRouterMiddleware} from './store'
import App from './containers/App.js' export const store = configureStore() reduxRouterMiddleware.listenForReplays(store)ReactDom.render(
<Provider store={store}> <Router> <Route path="/" component={App}/> </Router> </Provider>, document.getElementById('root') )2. react-router 4 中的 useRouterHistory(createHistory) 变成了什么 :
react-router 4 中没有 useRouterHistory(createHistory) 这种写法了,取而代之的是 BrowserRouter。
依赖: react-router (通用库,web 和 Native 都可用),react-router-dom (web用)
用法:src => store => index.js
export default function configureStore(preLoadedState) {
return createStore( rootReducer, preLoadedState, applyMiddleware(..., ...) ) }src => main.js
import {BrowserRouter as Router, Route} from 'react-router-dom'
import configureStore from './store' import App from './containers/App.js'export const store = configureStore()
ReactDom.render(
<Provider store={store}> <Router> <Route path="/" component={App}/> </Router> </Provider>, document.getElementById('root') )