Skip to content

Instantly share code, notes, and snippets.

@RWOverdijk
Created May 3, 2017 06:29
Show Gist options
  • Save RWOverdijk/40fa0401b0f08c0ad529b77f839ab375 to your computer and use it in GitHub Desktop.
Save RWOverdijk/40fa0401b0f08c0ad529b77f839ab375 to your computer and use it in GitHub Desktop.
Redux navigation (helper)
import createNavigationReducer from './createNavigationReducer';
import ActivityNavigation from '../Navigation/ActivityNavigation';
export const {reducer} = createNavigationReducer(ActivityNavigation, 'ActivitiesScreen');
import {createReducer} from 'reduxsauce';
import {NavigationActions} from 'react-navigation';
import Immutable from 'seamless-immutable';
export default (Navigator, initialScreen, reducers = {}) => {
let initialState = Navigator.router.getStateForAction(NavigationActions.navigate({routeName: initialScreen}));
let navigate = (state = initialState, action) => {
let mutableState = Immutable.asMutable(state, {deep: true});
return Immutable(Navigator.router.getStateForAction(NavigationActions.navigate(action, mutableState))) || state;
};
return {
initialState,
navigate,
reducer: createReducer(initialState, {
[NavigationActions.NAVIGATE]: navigate,
[NavigationActions.BACK] : navigate,
[NavigationActions.RESET] : () => initialState,
...reducers
})
};
};
import createNavigationReducer from './createNavigationReducer';
import DrawerNavigation from '../Navigation/DrawerNavigation';
export const {reducer} = createNavigationReducer(DrawerNavigation, 'Activities');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment