Skip to content

Instantly share code, notes, and snippets.

@jquense
Last active March 3, 2016 16:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jquense/669d0956f65bd63bccda to your computer and use it in GitHub Desktop.
Save jquense/669d0956f65bd63bccda to your computer and use it in GitHub Desktop.
code splitting with redux
export function connect(...stores) {
let filter = s => s;
if (!stores[stores.length - 1].__reduxName)
filter = stores.pop();
let connector = reduxConnect(
filter.length > 1
? (state, props) => filter(storesState(state, stores), props)
: (state) => filter(storesState(state, stores))
, null
, null
, { withRef: true }
)
return Component => {
let WrappedComponent = connector(Component)
WrappedComponent.connectedReducers = stores
return WrappedComponent
}
}
let globalReducers = {};
export function createReducer(name, reducer) {
if (typeof name !== 'string')
reducer = name, name = reducer.name;
invariant(name,
'Reducers must have a name, either provide one directly to `createReducer` or name the function.')
reducer.__reduxName = name;
globalReducers[name] = reducer
redux.replaceReducer(
combineReducers(globalReducers));
return reducer
}
export createReducer('user', function(state, action){
})
import userReducer from './reducers/user';
let connector = connect(userReducer, ({ users }) => ({ users }))
let AwesomeComponent = connector(
React.createClass({
...
})
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment