How to Create Store in React Redux ?
Last Updated :
18 Apr, 2024
React Redux is a JavaScript library that is used to create and maintain state in React Applications efficiently.
Here React Redux solves the problem by creating a redux store that stores the state and provides methods to use the state inside any component directly or to manipulate the state in a defined manner.
The Redux toolkit acts as a wrapper around Redux and encapsulates its necessary functions. Redux toolkit is flexible and provides a simple way to make a store for large applications. It follows the SOPE principle which means it is Simple, Opinionated, Powerful, and Effective.
How to Build Redux Store and Manage Complex State in ReactJS
After installing the required modules.
- First, create a store using the configureStore method provided by the redux toolkit inside the store.js file. This will be your store but we haven't created reducers.
- Now wrap up the whole application using provider which provide the store we created to the application.
- Now create slices for the store, use createSlice method from toolkit to create a slice which contains..
- Name of slice
- Initial states
- Reducer which then contains action
- Export the reducer and actions
- Imort redcuer inside store to register it.
- Now its time to use it, select the state inside component using hook and import corresponding actions.
- When update required, dispatch the action, this will update the state in store and inside component.
Steps to Create a React Application And Installing Module:
Step 1: Create a React application using the following command:
npx create-react-app redux_store
Step 2: After creating your project folder i.e. project_name, move to the folder using the following command:
cd redux_store
Step 3: Install React Redux Module:
npm install @reduxjs/toolkit react-redux
Project Structure:
project structureThe updated dependencies in package.json file will look like.
"dependencies": {
"@reduxjs/toolkit": "^2.2.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-redux": "^9.1.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
}
Wrap App with Redux Provider
- Inside index.js import store from store.js and provider from react redux
Syntax:
<Provider store={store}>
<App />
</Provider>
Create Redux Store
- Now create a folder store.js and create a store inside it.
- Also export it, currently it does not include any reducer, we will register the reducers once they created.
Syntax:
export const store = configureStore({
reducer: {
},
})
Create Redux State Slice Reducer
- Now create a slice, this include reducer and initial state. Also name should be unique. To create slice create another file slice.js.
- After that export slice reducer and actions
Syntax:
export const counterSlice = createSlice({
name: ' ',
initialState: ,
reducers: {
action_name: (state) => update the state;
},
})
Register State Slice in Store
- Just import the slice reducer inside store and register it inside the store.
Syntax:
reducer: {
counter: reducer_Name,
}
Use Redux State in React Component
- Now select the state inside your component using hook:
Syntax:
const state = useSelector( ( state ) => state.slice_name.value )
Now to update the state we have to dispatch the actions we defined earlier
const dispatch = useDispatch( )
dispatch(action_name( ) )
Exaplanation:
- Below you can see the two button increment and decrement.
- This button will dispatch the increment and decrement action to the store.
- Reducer inside store will update the value of counter according to the action. Here counter is a state.
- And this state available throughout the application and can be manipulated from any component.
Example:
JavaScript
import './App.css';
import {
useSelector,
useDispatch
} from 'react-redux'
import {
decrement,
increment
} from './store/slices/counterSlice'
function App() {
const count = useSelector((state) => state.counter.value)
const dispatch = useDispatch()
return (
<div className="App">
<header className="App-header">
<p>
Counter {count}
</p>
<button
onClick={() => dispatch(increment())}>
Increment
</button>
<button
onClick={() => dispatch(decrement())}>
Decrement
</button>
</header>
</div>
);
}
export default App;
JavaScript
import { configureStore } from '@reduxjs/toolkit'
import counterReducer from './slices/counterSlice'
export const store = configureStore({
reducer: {
counter: counterReducer
},
})
JavaScript
import { createSlice } from '@reduxjs/toolkit'
export const counterSlice = createSlice({
name: 'counter',
initialState: {
value: 0,
},
reducers: {
increment: (state) => {
state.value += 1
},
decrement: (state) => {
state.value -= 1
}
},
})
export const { increment, decrement } = counterSlice.actions
export default counterSlice.reducer
JavaScript
import { configureStore } from '@reduxjs/toolkit'
export const store = configureStore({
reducer: {
},
})
JavaScript
import React from 'react'
import ReactDOM from 'react-dom'
import './index.css'
import App from './App'
import { store } from './store/store'
import { Provider } from 'react-redux'
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
)
Start your application using the following command.
npm start
Output:
Output
Similar Reads
How to test React-Redux applications? Testing React-Redux applications is crucial to ensure their functionality, reliability, and maintainability. As we know, the React-Redux application involves complex interactions between components and Redux state management, testing helps us to identify and prevent bugs, regressions, and performanc
10 min read
Redux Store in React Native In this article, we are going to learn about Redux Store. It is the object which holds the state of the application. The store is one of the building blocks of Redux. Redux is a state managing library used in JavaScript apps. It is used to manage the data and the state of the application. Â Uses of
5 min read
How to Integrate Redux with React Components ? Redux is an open-source JavaScript library for managing and centralizing application state. It helps you to write applications that behave consistently and are easy to test and run in different environments. It can also be understood as the predictable state container for the JavaScript app. It is m
4 min read
How to use React Context with React-Redux ? React context with React-Redux is a popular state management library for React applications. Using React context with React-Redux is a powerful way to provide the Redux store to components deep within your component tree without manually passing it down through props. PrerequisitesNode.js and NPMRea
3 min read
Create a To-Do List App using React Redux A To-Do list allows users to manage their tasks by adding, removing, and toggling the completion status for each added item. It emphasizes a clean architecture, with Redux state management and React interface rendering. Todo AppPrerequisites Node.jsReactReact-ReduxApproachCreate a new React project
3 min read