React State Management (2) : Redux

This is a series of memos referring to the ways of React state management: context API, Redux and Redux toolkit. The topic in this article is Redux.

The chart below is the whole image of this practice application. ComponentA accepts user input text an…


This content originally appeared on DEV Community and was authored by DEV Community

This is a series of memos referring to the ways of React state management: context API, Redux and Redux toolkit. The topic in this article is Redux.

The chart below is the whole image of this practice application. ComponentA accepts user input text and passes it over to ComponentB as a prop. At the same time, dispatch the action to save the data in the store so that ComponentC and componentD can use it.


Redux Fundamentals, Part 1: Redux Overview | Redux

This is the image of this application.

This is the structure of files in src folder.

1) Set up types, actions, reducers, and store

First of all, you need to install redux and react-redux.

npm install redux react-redux

types

    export const SUBMIT = "SUBMIT";

actions

    import { SUBMIT } from "./types";

    export const submit = (text) => ({
      type: SUBMIT,
      payload: text,
    });

reducer

    import { SUBMIT } from "./types";
    const INIT_STATE = {
      text: null,
    };

    const reducer = (state = INIT_STATE, action) => {
      if (action.type === SUBMIT) {
        return {
          text: action.payload,
        };
      } else {
        return state; //provide the default action to return state which redux uses when initialization
      }
    };

    export default reducer;

store

    import { createStore } from "redux";
    import reducer from "./reducer";

    const store = createStore(reducer);

    export default store;

2) Provider

index.js

    import React from "react";
    import ReactDOM from "react-dom";
    import "./index.css";
    import App from "./App";

    import { Provider } from "react-redux";
    import store from "./redux/store";

    ReactDOM.render(
      <Provider store={store}>
        <App />
      </Provider>,
      document.getElementById("root")
    );

3) useDispatch, useSelector

ComponentA

    import { useState } from "react";
    import { useDispatch } from "react-redux";
    import { submit } from "../redux/actions";
    import ComponentB from "./ComponentB";
    const ComponentA = () => {
      const [value, setValue] = useState("");
      const dispatch = useDispatch();
      const changeHandler = (e) => {
        setValue(e.target.value);
        dispatch(submit(e.target.value));
      };
      return (
        <>
          <input type="text" value={value} onChange={changeHandler} />
          <ComponentB text={value} />
        </>
      );
    };

    export default ComponentA;

ComponentC

    import { useSelector } from "react-redux";
    const ComponentC = () => {
      const text = useSelector((state) => state.text);
      return (
        <>
          <h1>Uppercase</h1>
          <h2>{text && text.toUpperCase()}</h2>
        </>
      );
    };
    export default ComponentC;

ComponentD

    import { useSelector } from "react-redux";
    const ComponentD = () => {
      const text = useSelector((state) => state.text);
      return (
        <>
          <h1>Lowercase</h1>
          <h2>{text && text.toLowerCase()}</h2>
        </>
      );
    };

    export default ComponentD;

The whole code is available here

Thank you for reading :)

The original article is here


This content originally appeared on DEV Community and was authored by DEV Community


Print Share Comment Cite Upload Translate Updates
APA

DEV Community | Sciencx (2022-03-07T06:45:05+00:00) React State Management (2) : Redux. Retrieved from https://www.scien.cx/2022/03/07/react-state-management-2-redux/

MLA
" » React State Management (2) : Redux." DEV Community | Sciencx - Monday March 7, 2022, https://www.scien.cx/2022/03/07/react-state-management-2-redux/
HARVARD
DEV Community | Sciencx Monday March 7, 2022 » React State Management (2) : Redux., viewed ,<https://www.scien.cx/2022/03/07/react-state-management-2-redux/>
VANCOUVER
DEV Community | Sciencx - » React State Management (2) : Redux. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/03/07/react-state-management-2-redux/
CHICAGO
" » React State Management (2) : Redux." DEV Community | Sciencx - Accessed . https://www.scien.cx/2022/03/07/react-state-management-2-redux/
IEEE
" » React State Management (2) : Redux." DEV Community | Sciencx [Online]. Available: https://www.scien.cx/2022/03/07/react-state-management-2-redux/. [Accessed: ]
rf:citation
» React State Management (2) : Redux | DEV Community | Sciencx | https://www.scien.cx/2022/03/07/react-state-management-2-redux/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.