react-url-query
Version:
A library for managing state through query parameters in the URL in React. Works well with or without Redux and React Router.
47 lines (38 loc) • 1.9 kB
JavaScript
;
exports.__esModule = true;
exports.default = urlQueryReducer;
var _updateUrlQueryFromAction = require('./updateUrlQueryFromAction');
var _UrlUpdateTypes = require('../UrlUpdateTypes');
var _UrlUpdateTypes2 = _interopRequireDefault(_UrlUpdateTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Reducer that handles actions that modify the URL query parameters.
* In this case, the actions replace a single query parameter at a time.
*
* NOTE: This is *NOT* a Redux reducer. It does not map from (state, action) -> state.
* Instead it "reduces" actions into URL query parameter state. NOT redux state.
*/
function urlQueryReducer(action, location) {
var updateType = action && action.meta && action.meta.updateType;
switch (updateType) {
case _UrlUpdateTypes2.default.replaceIn:
return (0, _updateUrlQueryFromAction.replaceInUrlQueryFromAction)(action, location);
case _UrlUpdateTypes2.default.replace:
return (0, _updateUrlQueryFromAction.replaceUrlQueryFromAction)(action, location);
case _UrlUpdateTypes2.default.multiReplaceIn:
return (0, _updateUrlQueryFromAction.multiReplaceInUrlQueryFromAction)(action, location);
case _UrlUpdateTypes2.default.pushIn:
return (0, _updateUrlQueryFromAction.pushInUrlQueryFromAction)(action, location);
case _UrlUpdateTypes2.default.push:
return (0, _updateUrlQueryFromAction.pushUrlQueryFromAction)(action, location);
case _UrlUpdateTypes2.default.multiPushIn:
return (0, _updateUrlQueryFromAction.multiPushInUrlQueryFromAction)(action, location);
default:
break;
}
if (process.env.NODE_ENV === 'development') {
console.warn('urlQueryReducer encountered unhandled action.meta.updateType ' + updateType + '.', // eslint-disable-line no-console
'action =', action);
}
return undefined;
}