Installation
The recommended way to start new apps with React and Redux is by using the official Redux+JS template or Redux+TS template for Create React App, which takes advantage of Redux Toolkit and React Redux’s integration with React components.
# Redux + Plain JS template npx create-react-app my-app --template redux # Redux + TypeScript template npx create-react-app my-app --template redux-typescript
or an existing react app:
# If you use npm: npm install react-redux
Using React Redux
store.js
import {configureStore} from '@reduxjs/toolkit'; const counterReducer = (state = {counter: 0}, action) => { if (action.type === "increment") { return {counter: state.counter + 1}; } else if (action.type === "decrement") { return {counter: state.counter - 1}; } return state; } export const store = configureStore({ reducer: counterReducer });
index.js
import React from 'react'; import { createRoot } from 'react-dom/client'; import { Provider } from 'react-redux'; import { store } from './app/store'; import App from './App'; import reportWebVitals from './reportWebVitals'; const container = document.getElementById('root'); const root = createRoot(container); root.render( <React.StrictMode> <Provider store={store}> <App /> </Provider> </React.StrictMode> ); reportWebVitals();
Counter.js
import {useSelector, useDispatch} from 'react-redux'; function Counter() { const counter = useSelector(state => state.counter); const dispatch = useDispatch(); const incrementHandler = () => { dispatch({type: "increment"}); } const decrementHandler = () => { dispatch({type: "decrement"}); } return ( <div> <div>Counter : {counter}</div> <div> <button onClick={incrementHandler}>Increment</button> <button onClick={decrementHandler}>Decrement</button> </div> </div> ); } export default Counter;
References
https://react-redux.js.org/introduction/getting-started