Home > Mobile >  ReactJS conditional dispatch reducer action
ReactJS conditional dispatch reducer action

Time:05-09

I am dispatching actions with a dispatch function from within child components available via context api.

const NotificationProvider = (props) => {
  const [state, dispatch] = useReducer((state, action) => {
    switch (action.type) {
      case "ADD_NOTIFICATION":
        return [...state, {...action.payload}];
      case "REMOVE_NOTIFICATION":
        return state.filter(el => el.id !== action.id);
      default:
        return state
    }
  }, []);

How can I keep (maximum) only latest 3 elements from the state?

CodePudding user response:

Add the payload to the front of the notifications and then slice off the rest (this way you also have latest notifications upfront.

    case "ADD_NOTIFICATION":
        return [{...action.payload}, ...(state.slice(0,2))];
    }
  • Related