СОЗДАНИЕ ПРИЛОЖЕНИЯ TODO С REACT
Учебное пособие по приложению React Todo
Учебник ReactJS по созданию потрясающего приложения Todo
В этом посте я объясню, как создать приложение Todo с помощью React (библиотека JavaScript для создания пользовательских интерфейсов) с синтаксисом ES6 и хуками React с нуля. Это будет очень простое приложение с полем ввода для ввода элемента Todo и кнопкой удаления рядом с каждым элементом для удаления элемента. Кроме того, мы будем использовать хук useState
из React, чтобы сохранить состояние нашего приложения и некоторые расширенные функции JavaScript, такие как map()
, массивspread
, ternary operator
и filter()
методы. Цель этого руководства — помочь вам начать работу с React.
Полный код проекта можно найти здесь.
Предпосылки
Убедитесь, что установлено следующее:
- NodeJS и NPM — Страница загрузки
- Создать приложение React — Руководство по установке
Настраивать
Первый шаг — создать новое приложение React с помощью инструмента командной строки create-react-app
. Мы создадим новый каталог, а затем создадим приложение React внутри только что созданного каталога. Вы можете использовать следующие команды для выполнения этой задачи.
1 $ mkdir react-todo-app 2 $ cd react-todo-app 3 $ create-react-app ./
Чтобы начать с нуля, давайте удалим из папки src
все, кроме файлов App.js
и index.js
. Внутри App.js
удалите все, кроме родительского заголовка, и добавьте к нему элемент h1
element <h1> React Todo App </h1>
. Чтобы увидеть свое приложение в действии, запустите npm start
в окне терминала в корне вашего проекта.
Этот коммит GitHub отражает изменения до этого момента.
CSS и стиль
На данный момент мы создали очень простое приложение, содержащее только один элемент h1
. Но прежде чем двигаться дальше, давайте добавим нашему приложению несколько основных стилей, чтобы оно выглядело великолепно. Создайте файлApp.css
в каталоге src
и импортируйте его в файл App.js
. Добавьте стили из этого списка в файл App.css
.
Вы можете сравнить свой проект с этим коммитом GitHub.
Создание начального макета
Мы начнем с простого макета с полем input
и полем button
для добавления нового элемента Todo. В файле App.js
создайте новый div
с классом input-wrapper
в родительском div
.
Создание и отображение задач
Этот раздел состоит из следующих шагов:
1. Создайте новый элемент Todo
Чтобы отслеживать состояние внутри компонента React, мы будем использовать хук useState
hook. useState
hook принимает начальное значение состояния и возвращает массив с двумя значениями: первое — это функция-получатель, отображающая текущее значение определенного состояния, а второе — функция-установщик, обновляющая состояние.
Мы будем использовать useState
в этом приложении, чтобы отслеживать каждый новый элемент Todo и список Todo. Но сначала внутри App.js
file мы импортируем useState
hook следующим образом:
import { useState } from "react";
Для начала мы создадим todo
state (геттер) с undefined
value и метод setTodo
(сеттер) для установки текущего значения todo
item:
const [todo, setTodo] = useState("");
Поля ввода имеют обработчик onChange
event, который срабатывает каждый раз, когда изменяется значение этого поля. Этот обработчик событий не предоставляет значение напрямую, а вместо этого предоставляет объект event
, который можно использовать для получения значения с помощью event.target.value
.
Функция setTodo
setter будет прикреплена к обработчику событий onChange
, который будет передавать значение ввода в функцию установки через event.target.value
. Значение из ввода впоследствии используется методом установки для обновления состояния todo
.
Вы можете сравнить свой проект с этим коммитом GitHub.
2. Добавить элемент Todo в список Todos
После создания нового Todo нам нужно добавить его в список Todos. Мы будем действовать так же, как при создании нового элемента Todo. Мы создадим новый хук useState, чтобы отслеживать состояние массива Todos и добавлять в него новые элементы.
const [todos, setTodos] = useState([]);
Далее создадим onClick
функциюaddTodo
, чтобы добавить todo
элемент в массив Todos. Эта функция будет запущена при нажатии кнопки Add
. Важно помнить, что состояние никогда не должно изменяться напрямую. Поэтому нам нужно будет сделать копию массива Todos, прежде чем добавлять в него элементы todo. Чтобы скопировать массив Todos и добавить в него элемент todo, мы будем использовать оператор Array spread.
const addTodo = () => { setTodos([...todos, todo]); };
Мы хотим убедиться, что значение не пустое при добавлении нового элемента Todo в список. Это можно сделать с помощью оператора if в нашей функции addTodo
, которая проверяет наличие пустого значения. Кроме того, после добавления значения ввода в список задач мы хотим очистить поле ввода.
Наконец, мы передадим эту функцию обработчику onClick
кнопки Add
.
<button className="add-button" onClick={addTodo}>
Этот коммит GitHub отражает полный код до этого момента.
3. Отображение задач
Мы создадим ul
с классом todo-list
для отображения записей из списка Todos. Мы пройдемся по элементам массива с помощью метода map()
, а затем покажем их как li
внутри ul
элемента. Мы будем вызывать метод map()
с двумя аргументами: значением текущего обрабатываемого элемента в массиве и его индексом. Для нашей цели index
будет использоваться как ключ li
.
Мы создадим новый div
с классом todo
для каждого элемента в списке Todos. У этого div
будет li
элемент и delete
кнопка для его удаления.
Мы хотим убедиться, что список не пуст непосредственно перед его отображением. Тернарный оператор будет использоваться для отображения элементов списка, а также сообщения, если список пуст.
Вы можете сравнить свой проект с этим коммитом GitHub до этого момента.
Удаление элементов Todo
Начнем с создания функции onClick
, которая срабатывает при нажатии кнопки удаления. В этой функции удаления будет использоваться метод filter()
, который создаст новый массив со всеми элементами, соответствующими установленным критериям. В нашем примере мы хотим создать новый массив Todos, содержащий все элементы, кроме удаляемого. Наконец, обновите состояние с помощью вновь созданных задач.
Передайте метод deleteTodo
обработчику onClick
кнопки delete
.
Код к этому пункту вы можете найти здесь.
Рефакторинг кода
Чтобы собрать пользовательский ввод и показать элементы Todos, мы можем перестроить наше приложение, создав два независимых компонента, TodoInput
и TodoList
. В каталоге src
создайте два файла: TodoInput.js
и TodoList.js
. Заполните каждый файл содержимым, указанным в фрагментах кода ниже:
Наконец, импортируйте эти два компонента в компонент App.js
:
Теперь, когда вы знакомы с основами, пришло время запачкать руки и начать создавать свое первое приложение React. Удачи и счастливого кодирования🎉🎉🎉