ClickCease
To-do list

Building a To-Do List App with React Native: A Step-by-Step Guide

Mark Worachote
Solutions Engineer
Android
iOS
Feb 29, 2024

Welcome to our comprehensive guide on creating a To-Do List application using React Native!

React Native, a powerful framework developed by Facebook, allows you to build cross-platform mobile applications using the familiar syntax of React. In this tutorial, we’ll cover essential React Native concepts, including components, state management, and basic styling. By the end of this guide, you’ll have a fully functional Todo List app ready for your mobile device.

Prerequisites

Before we start building our Todo List app, ensure you have the following prerequisites in place:

  • Basic knowledge of JavaScript and React concepts.
  • Node.js and npm installed on your computer.
  • Expo CLI globally installed in your machine using npm install -g expo-cli.
  • A code editor like Visual Studio Code.
  • A mobile device with the Expo Go app installed for testing.

Step 1: Set Up the Project

Our first task is to set up the React Native project using Expo. Open your terminal and execute the following commands:

1) Create a React Native App

2) Navigate to the Project Directory

3) Start the Development Server

This will generate a new React-Native project named “todo-app” and launch the development server.

Step 2: Create the App Component

Now, let’s create the App component, the entry point to our Todo List application.

Step 3: Create the TodoList Component

In this step, we’ll create the TodoList component, which will manage the list of tasks and handle task-related functionality.

Explanation:

  • Import Required Modules: We start by importing the necessary modules for our TodoList component.
  • Define TodoList Component: We declare the TodoList functional component, our central component for managing the todo list.
  • State Hooks: Using the useState hook, we initialize two state variables: tasks to manage the list of tasks, and text to handle the input text for adding new tasks. The tasks state is initially set with two example tasks.
  • Function to Add Task: The addTask function creates a new task object with a unique ID, the input text, and completion status set to false. It then updates the tasks state by adding the new task and resets the input text.
  • Function to Delete Task: The deleteTask function removes a task with a given ID from the tasks state using the filter method.
  • Function to Toggle Task Completion: The toggleCompleted function toggles the completion status of a task with a given ID. It uses the map method to create a new array of tasks with the targeted task's completion status flipped.
  • Render TodoList Component: The TodoList component renders the list of tasks using the map method, passing each task to the TodoItem component. It also includes a TextInput for entering new tasks and a Button to trigger the addTask function.

Step 4: Create the TodoItem Component

In this step, we’ll create the TodoItem component, which represents an individual task in our Todo List.

Explanation:

  • CheckBox: The CheckBox component represents the completion status of the task. Its value is determined by the task's completion status, and onValueChange triggers the toggleCompleted function when the checkbox is interacted with.
  • Text with Styling: The Text component displays the task text. The styling includes a line-through decoration if the task is completed.
  • Delete Button: The Button component provides a delete button with an "X" label. Pressing the button triggers the deleteTask function.

Step 5: Styling

To enhance the visual appeal of your Todo List, let’s apply some basic styling. In your project, create a file named styles.css and add the following styles:

Now, let’s import the styles.css in your TodoItem.js file to apply the styles locally:

Explanation:

  • .todo-item : Applies a flex layout to each todo item, aligns items horizontally with space between, and adds some padding, border, and border-radius for a neat appearance.
  • .todo-item-text : Allows the text to take up the remaining space, adds right margin, and changes text color.
  • .completed : Adds a line-through decoration and changes text color for completed tasks.
  • .delete-button : Styles the delete button with a red background, white text, padding, and border-radius. It also provides a cursor pointer for interaction.

That’s a wrap! Congratulations on building your own Todo List app using React Native. Throughout this guide, you’ve grasped the ins and outs of React Native components, state management, hooks, props, event handling, and spiced things up with a touch of styling. Now, let’s reflect on what you’ve achieved and think about what’s next.

Final Thoughts

Building a To-Do List app is just the tip of the iceberg in your React Native journey. With the solid foundation you’ve laid down, it’s time to think about where to go from here. Consider adding features like task editing, drag-and-drop reordering, or diving into backend integration to take your app to the next level.

And hey, why stop there? If you’re up for a challenge, explore real-time chat and social features to make your app more interactive. Take a peek at what Social+ Chat SDK and Social+ SDK have to offer — it might just be the missing piece for your next big project. Also, If you discover that a ready-made solution for chat, social, and live-streaming aligns with your business goals, don’t hesitate to kickstart things by contacting Social+!

As you continue coding and learning, remember that every line of code is a step forward. So, keep at it, explore new horizons, and embrace the exciting world of React Native development. Cheers to your coding journey!