export
const DEFAULT_APP_STATE = "Initial state";

 

export const appReducer = (state = { ...DEFAULT_APP_STATE }, action) => {

  switch (action.type) {

    case "update":

      return action.payload;

    default:

      return action.payload;

  }

};





import React, { useEffect } from "react";

import { appReducer, DEFAULT_APP_STATE } from "./reducer/reducer";

import Event from "./event";

export default function Title() {

  const [reducerState, dispatch] = React.useReducer(

    appReducer,

    DEFAULT_APP_STATE

  );

  const [state, setState] = React.useState(reducerState);

  useEffect(() => {

    console.log("new state by Reducer", reducerState);

    setState(reducerState);

  }, [reducerState]);

 

  return <h1>Title state: {state}</h1>;

}






import React, { useEffect } from "react";

import { appReducer, DEFAULT_APP_STATE } from "./reducer/reducer";

import Event from "./event";

export default function Description() {

  const [reducerState, dispatch] = React.useReducer(

    appReducer,

    " in description"

  );

  const [state, setState] = React.useState(reducerState);

  return (

    <React.Fragment>

      <p>Description State: {state}</p>

      <p>

        <button

          onClick={() => {

            const newState = "State updated by useReducer";

            console.log(newState, reducerState);

            setState(newState);

            dispatch({

              type: "update",

              payload: newState,

            });

          }}

        >

          Dispatch using Reducer

        </button>

      </p>

 

    </React.Fragment>

  );

}