template-ivan
Version:
50 lines (41 loc) • 1.63 kB
JavaScript
// @flow
import React from 'react'
import { render } from 'react-dom'
import { createStore, applyMiddleware, compose } from 'redux'
import { Provider } from 'react-redux'
import createHistory from 'history/createBrowserHistory'
import { ConnectedRouter, routerMiddleware } from 'react-router-redux'
import thunk from 'redux-thunk'
import type { Store as ReduxStore } from 'redux'
import './assets/index.css'
import reducers from './reducers/index'
import Router from './router'
// 请求要统一处理,please modify the middleware
import httpMiddleware from './middleware/httpmiddleware'
import registerServiceWorker from './registerServiceWorker'
import type { State } from './reducers/index'
import type { Actions, Dispatch } from './actions/index'
const history = createHistory()
const middleware = [thunk, routerMiddleware(history), httpMiddleware]
// see: http://zalmoxisus.github.io/redux-devtools-extension/
// eslint-disable-next-line no-underscore-dangle
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?
// eslint-disable-next-line no-underscore-dangle
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) : compose
const enhancer = composeEnhancers(applyMiddleware(...middleware))
// 全局Store
type Store = ReduxStore<State, Actions, Dispatch>
const store: Store = createStore(reducers, enhancer)
const element = document.getElementById('root')
if (!element) {
throw new Error("couldn't find element with id root")
}
render(
<Provider store={store}>
<ConnectedRouter history={history}>
<Router />
</ConnectedRouter>
</Provider>,
element,
)
registerServiceWorker()