Blog>
Snippets

Connecting Undo Actions to React Components

Demonstrate how to wire up an undo button in a React component to dispatch an undo action that is handled by Redux-Saga.
import React from 'react';
import { useDispatch } from 'react-redux';
import { actionCreators } from './sagaActions';
First, we import React and useDispatch from react-redux for dispatching actions. Also, we import our saga actions.
const UndoButton = () => {
  const dispatch = useDispatch();

  const handleUndo = () => {
    dispatch(actionCreators.undo());
  };

  return (
    <button onClick={handleUndo}>Undo</button>
  );
};

export default UndoButton;
This code defines a simple UndoButton React component. When clicked, it dispatches an undo action using the useDispatch hook. This action is to be caught and handled by a redux-saga watcher.
import { takeLatest, put } from 'redux-saga/effects';

function* handleUndoAction() {
  // implement the undo logic here or call another saga/function
  console.log('Undo action triggered');
}

export function* watchUndo() {
  yield takeLatest('UNDO', handleUndoAction);
}
Here we define a Saga watcher that listens for the 'UNDO' action type. When an UNDO action is dispatched, the handleUndoAction generator function is executed to perform the undo operation or logic.