Understanding Redux and Using Redux Toolkit in React Native - Featured Image
Web development5 min read

Understanding Redux and Using Redux Toolkit in React Native

Building mobile apps can get pretty complicated, especially when you need to keep track of lots of information. That's exactly where Redux comes to help! Think of Redux as your personal assistant that helps you organize and manage all the important data in your React Native app. Today, I'll walk you through what Redux is all about and show you how to use it in your React Native project with Redux Toolkit.

What is Redux?

Redux is a predictable state management library commonly used with JavaScript applications, especially React. It centralizes the app’s state in a single store, allowing components to access and update state in a consistent way using actions and reducers. Redux helps manage complex state interactions, making debugging and testing easier, and ensures data flows in one direction, improving application structure and maintainability.

Core concepts in Redux

Let me break down the main pieces of Redux in simple terms:

  • Store: This is like your main filing cabinet - it's a single place where all your app's information lives. Everything important gets stored here, and it gives you ways to update that information safely.

  • Actions: These are like sticky notes that describe what you want to change. They're simple objects that tell the store "hey, something needs to happen here."

  • Reducers: Think of these as your instruction manual. They're functions that look at what action you want to take and figure out exactly how to update your information based on that action.

  • Dispatch: This is your messenger service. It's the only way to send those action sticky notes to your store to actually make changes happen.

  • Selectors: These are like your search functions - they help you find and grab specific pieces of information from your store when you need them.

Setting up a React Native app with Redux Toolkit

Alright, let's get our hands dirty and actually build something! I'll take you through each step to get Redux working in your React Native app.

Step 1: Create a React Native app

First things first, let's create a brand new React Native project:

npx react-native init ReduxExample
cd ReduxExample

This command creates a fresh React Native app with all the basic files you need to get started.

Step 2: Install Redux Toolkit and dependencies

Now we need to add Redux Toolkit to our project. Run this command:

yarn add @reduxjs/toolkit react-redux

or if you prefer npm:

npm install @reduxjs/toolkit react-redux

This installs Redux Toolkit (which has everything we need) and react-redux (which helps connect Redux to our React components).

Step 3: Create a slice

In Redux, a "slice" is basically a chunk of your app's data along with the functions that can change that data. Let's create a file called counterSlice.js in your src folder:

// counterSlice.js
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 const selectCount = (state) => state.counter.value;

export default counterSlice.reducer;

This file sets up a simple counter that can go up or down. We're defining what our counter looks like initially (starts at 0), and creating two actions: one to increase the number and one to decrease it.

Step 4: Create the Redux store

Next, create a file called store.js in your src folder:

// store.js
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';

export const store = configureStore({
  reducer: {
    counter: counterReducer,
  },
});

This creates our main store and tells it to use our counter reducer. Think of this as setting up our filing cabinet and putting our counter folder inside it.

Step 5: Connect Redux to React Native

Open up your index.js file and wrap your App component with the Provider:

// index.js
import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';
import { store } from './store';
import { Provider } from 'react-redux';

const ReduxExample = () => (
  <Provider store={store}>
    <App />
  </Provider>
);

AppRegistry.registerComponent(appName, () => ReduxExample);

The Provider basically makes our Redux store available to every component in our app. It's like giving everyone in your office access to that organized filing cabinet.

Step 6: Use Redux in your React Native components

Now let's update our App.js file to actually use Redux:

// App.js
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement, selectCount } from './counterSlice';
import { View, Text, Button } from 'react-native';

const App = () => {
  const count = useSelector(selectCount);
  const dispatch = useDispatch();

  return (
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <Text>Redux Example</Text>
      <Text>Count: {count}</Text>
      <Button title="Increment" onPress={() => dispatch(increment())} />
      <Button title="Decrement" onPress={() => dispatch(decrement())} />
    </View>
  );
};

export default App;

Here we're using two important hooks: useSelector to get our counter value from the store, and useDispatch to send actions when someone taps the buttons.

Step 7: Run your app

Finally, let's see our app in action:

npx react-native run-android

or for iOS:

npx react-native run-ios

That's it! Your app should now be running with Redux managing the counter state. You can tap the buttons to increase or decrease the number, and Redux handles all the state management behind the scenes.

Conclusion

We've covered the fundamentals of Redux and walked through setting up Redux Toolkit in a React Native app. By understanding these core concepts and following the steps we went through, you can really improve how you handle data in your mobile apps. As you continue learning React Native, remember that Redux Toolkit makes everything much simpler and more straightforward. It takes care of a lot of the complicated stuff so you can focus on building great apps. Keep practicing with these concepts, and you'll find managing app state becomes much easier over time!

hassaankhan789@gmail.com

Frontend Web Developer

Posted by





Subscribe to our newsletter

Join 2,000+ subscribers

Stay in the loop with everything you need to know.

We care about your data in our privacy policy

Background shadow leftBackground shadow right

Have something to share?

Write on the platform and dummy copy content

Be Part of Something Big

Shifters, a developer-first community platform, is launching soon with all the features. Don't miss out on day one access. Join the waitlist: