mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-02-12 17:31:06 +08:00
71 lines
1.7 KiB
JavaScript
71 lines
1.7 KiB
JavaScript
const namespacedAction = (action: string) => `Navigation/${action}`;
|
|
|
|
const BACK = namespacedAction('BACK');
|
|
const INIT = namespacedAction('INIT');
|
|
const NAVIGATE = namespacedAction('NAVIGATE');
|
|
const RESET = namespacedAction('RESET');
|
|
const SET_PARAMS = namespacedAction('SET_PARAMS');
|
|
const URI = namespacedAction('URI');
|
|
|
|
const createAction = (type: string) => (payload: object = {}) => ({
|
|
type,
|
|
...payload,
|
|
});
|
|
|
|
const back = createAction(BACK);
|
|
const init = createAction(INIT);
|
|
const navigate = createAction(NAVIGATE);
|
|
const reset = createAction(RESET);
|
|
const setParams = createAction(SET_PARAMS);
|
|
const uri = createAction(URI);
|
|
|
|
const deprecatedActionMap = {
|
|
Back: BACK,
|
|
Init: INIT,
|
|
Navigate: NAVIGATE,
|
|
Reset: RESET,
|
|
SetParams: SET_PARAMS,
|
|
Uri: URI,
|
|
};
|
|
|
|
const mapDeprecatedActionAndWarn = (action: object) => {
|
|
const mappedType = deprecatedActionMap[action.type];
|
|
if (!mappedType) { return action; }
|
|
|
|
console.warn([
|
|
`The action type '${action.type}' has been renamed to '${mappedType}'.`,
|
|
`'${action.type}' will continue to work while in beta but will be removed`,
|
|
'in the first major release. Moving forward, you should use the',
|
|
'action constants and action creators exported by this library in',
|
|
"the 'actions' object.",
|
|
'See https://github.com/react-community/react-navigation/pull/120 for',
|
|
'more details.',
|
|
].join(' '));
|
|
|
|
return {
|
|
...action,
|
|
type: deprecatedActionMap[action.type],
|
|
};
|
|
};
|
|
|
|
export default {
|
|
// Action constants
|
|
BACK,
|
|
INIT,
|
|
NAVIGATE,
|
|
RESET,
|
|
SET_PARAMS,
|
|
URI,
|
|
|
|
// Action creators
|
|
back,
|
|
init,
|
|
navigate,
|
|
reset,
|
|
setParams,
|
|
uri,
|
|
|
|
// TODO: Remove once old actions are deprecated
|
|
mapDeprecatedActionAndWarn,
|
|
};
|