1.4.13 • Published 2 years ago

history-reducer v1.4.13

Weekly downloads
2
License
MIT
Repository
github
Last release
2 years ago

history-reducer

Dead simple react hook to create state history based on react useReducer. Developed to implement undo/redo shortcuts.

Version Downloads/week License Size Coverage Status install size

npm.io

install

yarn add history-reducer

(TS declarations are shipped within this package)

Usage

Actions

ActionDescription
pushpush new current state
backmake the prev state the current, and push the current to the future stack
forwardif available, push the last future state to the current, and make the current the last past state
resetreset past and future state, and optional set a new current state

Hooks

useHistoryReducer

const [{present, past, future}, dispatch] = useHistoryReducer(0, 5);

The hook useHistoryReducer returns the current state including present, past and future as the first argument, and a dispatch function as second. It accepts a default value as a first argument, and the max length for past and future as an optional second argument.

useUndoRedoHistory

const [state, dispatch] = useHistoryReducer();
useUndoRedoHistory(dispatch);

The hook useUndoRedoHistory listens to keydown events on window and dispatches back and forwardactions.

KeysAction
cmd + zback
cmd + shift zforward

Example

import {useHistoryReducer, useUndoRedoHistory} from "history-reducer";

const HistoryReducerExample = () => {
    const [{present, past}, dispatch] = useHistoryReducer(0);
    useUndoRedoHistory(dispatch);
    return (
        <div>
            <p>Current value is {present}, but has been {past} before</p>
            <button onClick={() => dispatch({type:'push', state: Math.abs(Math.random() * 100)})}>add</button>
            <button onClick={() => dispatch({type: 'back'})}>back</button>
        </div>
    )
}

Also check out the example here.

1.4.13

2 years ago

1.4.6

2 years ago

1.4.9

2 years ago

1.4.11

2 years ago

1.4.8

2 years ago

1.4.10

2 years ago

1.4.7

2 years ago

1.4.12

2 years ago

1.4.5

3 years ago

1.4.4

3 years ago

1.4.3

3 years ago

1.4.2

3 years ago

1.4.1

4 years ago

1.2.0

4 years ago

1.4.0

4 years ago

1.3.0

4 years ago

1.1.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago