Merge pull request #17517 from petejkim/master

[react-navigation] Fixed type definitions for NavigationActions.*
This commit is contained in:
Paul van Brenk
2017-06-27 14:04:11 -07:00
committed by GitHub
2 changed files with 86 additions and 30 deletions
+41 -25
View File
@@ -4,6 +4,7 @@
// mhcgrq <https://github.com/mhcgrq>
// fangpenlin <https://github.com/fangpenlin>
// abrahambotros <https://github.com/abrahambotros>
// petejkim <https://github.com/petejkim>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3
@@ -188,46 +189,63 @@ export interface NavigationParams {
[key: string]: any,
}
export type NavigationNavigateAction = {
type: 'Navigation/NAVIGATE',
export interface NavigationNavigateActionPayload {
routeName: string,
params?: NavigationParams,
// The action to run inside the sub-router
action?: NavigationNavigateAction,
};
}
export type NavigationBackAction = {
type: 'Navigation/BACK',
export interface NavigationNavigateAction extends NavigationNavigateActionPayload {
type: 'Navigation/NAVIGATE',
}
export interface NavigationBackActionPayload {
key?: string | null,
};
}
export type NavigationSetParamsAction = {
type: 'Navigation/SET_PARAMS',
export interface NavigationBackAction extends NavigationBackActionPayload {
type: 'Navigation/BACK',
}
export interface NavigationSetParamsActionPayload {
// The key of the route where the params should be set
key: string,
// The new params to merge into the existing route params
params?: NavigationParams,
};
}
export type NavigationInitAction = {
type: 'Navigation/INIT',
export interface NavigationSetParamsAction extends NavigationSetParamsActionPayload {
type: 'Navigation/SET_PARAMS',
}
export interface NavigationInitActionPayload {
params?: NavigationParams,
};
}
export type NavigationResetAction = {
type: 'Navigation/RESET',
export interface NavigationInitAction extends NavigationInitActionPayload {
type: 'Navigation/INIT',
}
export interface NavigationResetActionPayload {
index: number,
key?: string | null,
actions: Array<NavigationNavigateAction>,
};
}
export type NavigationUriAction = {
type: 'Navigation/URI',
export interface NavigationResetAction extends NavigationResetActionPayload {
type: 'Navigation/RESET',
}
export interface NavigationUriActionPayload {
uri: string,
};
}
export interface NavigationUriAction extends NavigationUriActionPayload {
type: 'Navigation/URI',
}
export interface NavigationStackViewConfig {
mode?: 'card' | 'modal',
@@ -575,15 +593,13 @@ export const TabBarBottom: React.ComponentClass<any>;
/**
* NavigationActions
* @todo Is this necessary, or can we remove? Not referenced anywhere else here, but it seems a
* recent commit or two touches these. Can anyone provide a strong use case for keeping this in?
*/
export namespace NavigationActions {
function init(options?: NavigationInitAction): NavigationInitAction;
function navigate(options: NavigationNavigateAction): NavigationNavigateAction;
function reset(options: NavigationResetAction): NavigationResetAction;
function back(options?: NavigationBackAction): NavigationBackAction;
function setParams(options: NavigationSetParamsAction): NavigationSetParamsAction;
export function init(options?: NavigationInitActionPayload): NavigationInitAction;
export function navigate(options: NavigationNavigateActionPayload): NavigationNavigateAction;
export function reset(options: NavigationResetActionPayload): NavigationResetAction;
export function back(options?: NavigationBackActionPayload): NavigationBackAction;
export function setParams(options: NavigationSetParamsActionPayload): NavigationSetParamsAction;
}
/**
@@ -5,22 +5,28 @@ import {
ViewStyle,
} from 'react-native';
import {
addNavigationHelpers,
NavigationAction,
NavigationActions,
NavigationBackAction,
NavigationInitAction,
NavigationNavigateAction,
NavigationProp,
NavigationResetAction,
NavigationRouteConfigMap,
NavigationScreenProp,
NavigationScreenProps,
NavigationSetParamsAction,
NavigationStackAction,
NavigationStackScreenOptions,
NavigationTabScreenOptions,
NavigationTransitionProps,
StackNavigator,
StackNavigatorConfig,
TabBarTop,
TabNavigator,
TabNavigatorConfig,
TabBarTop,
Transitioner,
NavigationProp,
NavigationAction,
NavigationTransitionProps,
addNavigationHelpers,
} from 'react-navigation';
// Constants
@@ -42,6 +48,7 @@ interface StartScreenNavigationParams {
id: number,
s: string,
}
interface StartScreenProps extends NavigationScreenProps<StartScreenNavigationParams> { }
class StartScreen extends React.Component<StartScreenProps, {}> {
render() {
@@ -219,3 +226,36 @@ class CustomTransitioner extends React.Component<CustomTransitionerProps, null>
return {}
}
}
const initAction: NavigationInitAction = NavigationActions.init({
params: {
foo: "bar"
}
})
const navigateAction: NavigationNavigateAction = NavigationActions.navigate({
routeName: "FooScreen",
params: {
foo: "bar"
},
action: NavigationActions.navigate({ routeName: "BarScreen" })
})
const resetAction: NavigationResetAction = NavigationActions.reset({
index: 0,
key: "foo",
actions: [
NavigationActions.navigate({ routeName: "FooScreen" })
]
})
const backAction: NavigationBackAction = NavigationActions.back({
key: "foo"
})
const setParamsAction: NavigationSetParamsAction = NavigationActions.setParams({
key: "foo",
params: {
foo: "bar"
}
})