Skip to content

Instantly share code, notes, and snippets.

@kikoseijo
Created February 11, 2018 16:54
Show Gist options
  • Save kikoseijo/85fa09f08f1efebd5009bda4b4b47fa2 to your computer and use it in GitHub Desktop.
Save kikoseijo/85fa09f08f1efebd5009bda4b4b47fa2 to your computer and use it in GitHub Desktop.
React navigation wrapper
import NavigatorService from './src/libs/navigator';
renderMain() {
const { token } = this.state;
if (token && token.length > 10) {
return (
<StackNavigator
ref={navigatorRef => {
NavigatorService.setContainer(navigatorRef);
}}
screenProps={{ logout: this._resetAnimation }}
/>
);
} else {
return <LoginScreen handleLogout={this._handleLogout} />;
}
}
import NavigatorService from './../libs/navigator';
NavigatorService.navigate(url);
// @flow
import { NavigationActions } from 'react-navigation';
import type { NavigationParams, NavigationRoute } from 'react-navigation';
let _container; // eslint-disable-line
function setContainer(container: Object) {
_container = container;
}
function reset(routeName: string, params?: NavigationParams) {
_container.dispatch(
NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({
type: 'Navigation/NAVIGATE',
routeName,
params
})
]
})
);
}
function navigate(routeName: string, params?: NavigationParams) {
_container.dispatch(
NavigationActions.navigate({
type: 'Navigation/NAVIGATE',
routeName,
params
})
);
}
function navigateDeep(
actions: { routeName: string, params?: NavigationParams }[]
) {
_container.dispatch(
actions.reduceRight(
(prevAction, action): any =>
NavigationActions.navigate({
type: 'Navigation/NAVIGATE',
routeName: action.routeName,
params: action.params
// action: prevAction
}),
undefined
)
);
}
function getCurrentRoute(): NavigationRoute | null {
if (!_container || !_container.state.nav) {
return null;
}
return _container.state.nav.routes[_container.state.nav.index] || null;
}
export default {
setContainer,
navigateDeep,
navigate,
reset,
getCurrentRoute
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment