UNPKG

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.

50 lines (45 loc) 1.62 kB
import { replaceInUrlQueryFromAction, replaceUrlQueryFromAction, multiReplaceInUrlQueryFromAction, pushInUrlQueryFromAction, pushUrlQueryFromAction, multiPushInUrlQueryFromAction, } from './updateUrlQueryFromAction'; import UrlUpdateTypes from '../UrlUpdateTypes'; /** * 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. */ export default function urlQueryReducer(action, location) { const updateType = action && action.meta && action.meta.updateType; switch (updateType) { case UrlUpdateTypes.replaceIn: return replaceInUrlQueryFromAction(action, location); case UrlUpdateTypes.replace: return replaceUrlQueryFromAction(action, location); case UrlUpdateTypes.multiReplaceIn: return multiReplaceInUrlQueryFromAction(action, location); case UrlUpdateTypes.pushIn: return pushInUrlQueryFromAction(action, location); case UrlUpdateTypes.push: return pushUrlQueryFromAction(action, location); case UrlUpdateTypes.multiPushIn: return 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; }