Vulcan/packages/nova-lib/lib/redux.js

40 lines
1.1 KiB
JavaScript
Raw Normal View History

import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
2017-01-31 10:21:09 +08:00
export const configureStore = (reducers, initialState = {}, middlewares) => createStore(
// reducers
combineReducers(reducers),
// initial state
initialState,
2017-02-06 14:33:34 +08:00
// middlewares
compose(
2017-01-31 10:21:09 +08:00
applyMiddleware(...middlewares),
typeof window !== "undefined" && window.devToolsExtension ? window.devToolsExtension() : f => f
)
);
let actions = {};
export const addAction = addedAction => {
actions = {...actions, ...addedAction};
return actions;
};
export const getActions = () => actions;
let reducers = {};
export const addReducer = addedReducer => {
reducers = {...reducers, ...addedReducer};
return reducers;
};
export const getReducers = () => reducers;
2017-01-31 10:21:09 +08:00
let middlewares = [];
export const addMiddleware = middlewareOrMiddlewareArray => {
const addedMiddleware = Array.isArray(middlewareOrMiddlewareArray) ? middlewareOrMiddlewareArray : [middlewareOrMiddlewareArray];
2017-01-31 10:21:09 +08:00
middlewares = [...middlewares, ...addedMiddleware];
2017-01-31 10:21:09 +08:00
return middlewares;
};
2017-01-31 10:21:09 +08:00
export const getMiddlewares = () => middlewares;