{"repo":"homerchen19/use-undo","free":true,"listed":false,"github":"https://github.com/homerchen19/use-undo","clone":"git clone https://github.com/homerchen19/use-undo.git","description":"React Hooks to implement Undo and Redo functionality","language":"TypeScript","stars":414,"topics":["react","hooks","react-hooks"],"license":"MIT","category":"ui-components","readme_excerpt":"♻️ use-undo undo/redo functionality with React Hooks. Installation Usage Manual Checkpoints Manual checkpoints are helpful also when you want manual control over checkpoints. For example it is more helpful when you want to handle input type html tag where value needs to be handled alongside the undo and redo functionality should be handled over some conditions. API useUndo state Type: Object Key Type Description ------- :-----: ------------------ past Array The undo stack. present Any The present state. future Array The redo stack. actions Type: Object Key Type Description ------- :--------: ------------------------------------------------------------------------------------------ set function Assign a new value to present . reset function Clear past array and future array. Assign a new value to present . undo function See handling-undo. redo function See handling-redo. canUndo boolean Check whether state.undo.length is 0 . canRedo boolean Check whether state.redo.length is 0 . How does it work? Refer to Redux Implementing Undo History , use-undo implements the same concect with useReducer . The state structure looks like: It stores all states we need. To operate on this state, there are three functions in actions ( set , undo and redo ) that dispatch defined types and necessary value. Related repo - omnidan/redux-undo License MIT © homerchen19","default_branch":null,"files":null,"tree":[],"storefront":"/r/homerchen19","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/homerchen19/use-undo/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}