with-url-state
Lifts the state out of a react component and into the url.
This package allows applications to retrieve the state from a react component and appends it to the url.
Installation
To install with npm use
npm install with-url-state --save
To install with yarn use
yarn add with-url-state
Usage
Using javascript
import { createBrowserHistory } from 'history';
import React from 'react';
import { withUrlState } from 'with-url-state';
const history = createBrowserHistory();
export const UrlForm = (props) => (
<div className="UrlForm">
<div className="current-state" style={{ backgroundColor: props.urlState.color}}>
<div>{props.urlState.color}</div>
</div>
<div className="color-buttons">
<button className="Red" onClick={() => props.setUrlState({ color: 'red' })}>
Red
</button>
<button className="Green" onClick={() => props.setUrlState({ color: 'green' })}>
Green
</button>
<button className="Blue" onClick={() => props.setUrlState({ color: 'blue' })}>
Blue
</button>
</div>
</div>
);
export default withUrlState(history, (props) => ({ color: 'blue' }))(UrlForm);
Using typescript
import { createBrowserHistory } from 'history';
import * as React from 'react';
import { withUrlState, UrlStateProps } from 'with-url-state';
const history = createBrowserHistory();
type OwnProps = {};
type LiftedState = { color: string };
export const UrlForm = (props: OwnProps & UrlStateProps<LiftedState>) => (
<div className="UrlForm">
<div className="current-state" style={{ backgroundColor: props.urlState.color}}>
<div>{props.urlState.color}</div>
</div>
<div className="color-buttons">
<button className="Red" onClick={() => props.setUrlState({ color: 'red' })}>
Red
</button>
<button className="Green" onClick={() => props.setUrlState({ color: 'green' })}>
Green
</button>
<button className="Blue" onClick={() => props.setUrlState({ color: 'blue' })}>
Blue
</button>
</div>
</div>
);
export default withUrlState<OwnProps, LiftedState>(history, (prop: OwnProps) => ({ color: 'blue' }))(UrlForm);