diff --git a/src/defaults.js b/src/defaults.js
index a51149e..57b87e4 100644
--- a/src/defaults.js
+++ b/src/defaults.js
@@ -4,10 +4,6 @@ export const options = {
// global initial state
// initialState: undefined,
- // Should be one of ['browser', 'hash', 'memory']
- // Learn more: https://github.com/ReactTraining/history/blob/master/README.md
- historyMode: 'browser',
-
// A list of the standard Redux middleware
middlewares: [],
@@ -25,20 +21,13 @@ export const options = {
}
-const historyModes = ['browser', 'hash', 'memory']
-
export default function defaults(opts = {}) {
const {
- historyMode,
middlewares,
addEffect
} = opts
- if (historyMode && !historyModes.includes(historyMode)) {
- throw new Error(`historyMode "${historyMode}" is invalid, must be one of ${historyModes.join(', ')}!`)
- }
-
if (middlewares && !Array.isArray(middlewares)) {
throw new Error(`middlewares "${middlewares}" is invalid, must be an Array!`)
}
diff --git a/src/index.js b/src/index.js
index 1fea0a3..acb0d1a 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,29 +1,15 @@
-import { Route, Redirect, Switch, Prompt, withRouter } from 'react-router'
-import { Link, NavLink } from 'react-router-dom'
-import { connect } from 'react-redux'
import model from './model'
import { actions } from './actions'
-import render from './render'
import hook from './hook'
-import Router from './router'
import defaults from './defaults'
+import init from './init'
export default {
model,
actions,
hook,
defaults,
- connect,
- render,
-
- Router,
- Route,
- Link,
- NavLink,
- Switch,
- Redirect,
- Prompt,
- withRouter
+ init,
}
export {
@@ -31,15 +17,5 @@ export {
actions,
hook,
defaults,
- connect,
- render,
-
- Router,
- Route,
- Link,
- NavLink,
- Switch,
- Redirect,
- Prompt,
- withRouter
+ init,
}
diff --git a/src/init.js b/src/init.js
new file mode 100644
index 0000000..7df0665
--- /dev/null
+++ b/src/init.js
@@ -0,0 +1,23 @@
+import { options } from './defaults'
+import { models } from './model'
+import { store, createStore, replaceReducer } from './store'
+
+let started = false
+let Root
+
+export default function init() {
+
+ const { initialState, middlewares, reducers } = options
+
+ if (started) {
+
+ // If app has rendered, do `store.replaceReducer` to update store.
+ replaceReducer(store, models, reducers)
+
+
+ } else {
+ createStore(models, reducers, initialState, middlewares)
+ }
+
+ return store
+}
diff --git a/src/render.js b/src/render.js
deleted file mode 100644
index 1403493..0000000
--- a/src/render.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React from 'react'
-import ReactDOM from 'react-dom'
-import { Provider } from 'react-redux'
-
-import { options } from './defaults'
-import { models } from './model'
-import { store, createStore, replaceReducer } from './store'
-
-let started = false
-let Root
-
-export default function render(component, container, callback) {
-
- const { initialState, middlewares, reducers } = options
-
- if (started) {
-
- // If app has rendered, do `store.replaceReducer` to update store.
- replaceReducer(store, models, reducers)
-
- // Call `render` without arguments means *re-render*. Since store has updated,
- // `component` will automatically be updated, so no need to `ReactDOM.render` again.
- if (arguments.length === 0) {
- return Root
- }
-
- } else {
- createStore(models, reducers, initialState, middlewares)
- }
-
- // Use named function get a proper displayName
- Root = function Root() {
- return (
-
- {component}
-
- )
- }
-
- started = true
-
- global.document && ReactDOM.render(, container, callback)
-
- return Root
-}
diff --git a/src/router.js b/src/router.js
deleted file mode 100644
index eadd813..0000000
--- a/src/router.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import React from 'react'
-import PropTypes from 'prop-types'
-import createBrowserHistory from 'history/createBrowserHistory'
-import createHashHistory from 'history/createHashHistory'
-import createMemoryHistory from 'history/createMemoryHistory'
-import { ConnectedRouter, routerActions } from 'react-router-redux'
-
-import { options } from './defaults'
-import { dispatch } from './middleware'
-import { actions } from './actions'
-
-export let history = null
-
-export default function Router({ history: _history, children, ...others }) {
-
- // Add `push`, `replace`, `go`, `goForward` and `goBack` methods to actions.routing,
- // when called, will dispatch the crresponding action provided by react-router-redux.
- actions.routing = Object.keys(routerActions).reduce((memo, action) => {
- memo[action] = (...args) => {
- dispatch(routerActions[action](...args))
- }
- return memo
- }, {})
-
- // Support for `basename` etc props for Router,
- // see https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/api/BrowserRouter.md
- if (!_history) {
- _history = createHistory(others)
- }
-
- history = _history
-
- // ConnectedRouter will use the store from Provider automatically
- return (
-
- {children}
-
- )
-}
-
-Router.propTypes = {
- children: PropTypes.element.isRequired,
- history: PropTypes.object
-}
-
-function createHistory(props) {
-
- const { historyMode } = options
-
- const historyModes = {
- browser: createBrowserHistory,
- hash: createHashHistory,
- memory: createMemoryHistory,
- }
-
- history = historyModes[historyMode](props)
-
- return history
-}
diff --git a/src/routerMiddleware.js b/src/routerMiddleware.js
deleted file mode 100644
index 4ba4e68..0000000
--- a/src/routerMiddleware.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * @credit react-router-redux
- * @see https://github.com/ReactTraining/react-router/blob/master/packages/react-router-redux/modules/middleware.js
- *
- * This is the routerMiddleware from react-router-redux, but to use
- * the global `history` object instead of the passed one.
- */
-
-import { CALL_HISTORY_METHOD } from 'react-router-redux'
-import { history } from './router'
-
-export default function routerMiddleware() {
- return () => next => action => {
- if (action.type !== CALL_HISTORY_METHOD) {
- return next(action)
- }
-
- const { payload: { method, args } } = action
- history[method](...args)
- }
-}
diff --git a/src/store.js b/src/store.js
index 576b389..0349acc 100644
--- a/src/store.js
+++ b/src/store.js
@@ -4,17 +4,14 @@ import {
combineReducers,
compose
} from 'redux'
-import { routerReducer } from 'react-router-redux'
import createMiddleware from './middleware'
-import routerMiddleware from './routerMiddleware'
export let store
export function createStore(models, reducers, initialState, middlewares = []) {
const middleware = applyMiddleware(
- routerMiddleware(),
...middlewares,
createMiddleware()
)
@@ -25,12 +22,12 @@ export function createStore(models, reducers, initialState, middlewares = []) {
// Following line to exclude from coverage report:
/* istanbul ignore next */
- if (process.env.NODE_ENV !== 'production') {
- // Redux devtools extension support.
- if (global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {
- composeEnhancers = global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
- }
- }
+ // if (process.env.NODE_ENV !== 'production') {
+ // // Redux devtools extension support.
+ // if (global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {
+ // composeEnhancers = global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
+ // }
+ // }
const reducer = createReducer(models, reducers)
const enhancer = composeEnhancers(...enhancers)
@@ -55,7 +52,6 @@ function createReducer(models, reducers) {
return combineReducers({
...reducers,
...modelReducers,
- routing: routerReducer
})
}