Перейти к содержимому

Как сделать to do list

  • автор:

Как создать приложение Todo на React

Рассмотрим, как с нуля создать приложение Todo (список дел) с помощью React, библиотеки JavaScript для разработки пользовательских интерфейсов, используя синтаксис ES6 и хуки React. Это будет базовое приложение с полем для ввода элемента Todo и кнопкой рядом с каждым элементом, предназначенной для его удаления.

Кроме того, мы будем использовать хук useState из React для сохранения состояния приложения и некоторые продвинутые функции JavaScript, такие как map() , массив spread , ternary operator и метод filter() . Цель этого руководства — помочь новичкам начать работу с React.

Полный код проекта можно найти здесь.

Необходимые условия

Установите следующие программы.

  • NodeJS и NPM (загрузить здесь).
  • Create React App (руководство по установке).

Установка

Для начала создадим новое приложение 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 -элемент (

React Todo App

). Чтобы увидеть приложение в действии, запустите команду npm start в окне терминала в корне проекта.

Этот коммит на GitHub показывает изменения до настоящего момента.

CSS и стиль

Мы создали простое приложение, содержащее только один элемент h1 . Прежде чем двигаться дальше, добавим в него несколько основных стилей. Создайте файл App.css в каталоге src и импортируйте его в файл App.js . Добавьте стили из этой ссылки в файл App.css .

Можете сравнить свой проект с этим коммитом на GitHub.

Создание начального макета

Начнем с простого макета, содержащего поле input и button для добавления нового элемента Todo. В файле App.js создайте новый div с классом input-wrapper внутри родительского div .

Создание и отображение элементов Todo

1. Создание нового элемента Todo

Чтобы отслеживать состояние внутри компонента React, мы будем использовать хук useState . Он принимает начальное значение состояния и возвращает массив с двумя значениями:

  • функция getter , которая отображает текущее значение определенного состояния;
  • функция setter , обновляющая состояние.

Мы будем использовать useState в этом приложении для отслеживания каждого нового элемента Todo и списка Todo. Но сначала мы импортируем хук useState в файл App.js следующим образом:

import < useState >from "react";

Для начала создадим состояние todo (функция getter ) со значением undefined и метод setTodo (функция setter ) для установки значения текущего элемента todo .

const [todo, setTodo] = useState("");

Поля ввода снабжены обработчиком событий onChange , который срабатывает каждый раз, когда значение поля изменяется. Этот обработчик событий предоставляет не само значение, а объект event , который можно использовать для получения значения с помощью event.target.value .

Setter -функция setTodo будет присоединена к обработчику событий onChange , который передает значение входа в setter -функцию через event.target.value . Значение из входа впоследствии используется методом setter для обновления состояния todo .

Проект можно сравнить с этим коммитом на Github.

2. Добавление элемента Todo в список

После создания нового Todo нужно добавить его в список. Мы будем действовать так же, как и при создании нового элемента Todo. Нам нужно создать новый хук useState для отслеживания состояния массива Todos и добавить в него новые элементы.

const [todos, setTodos] = useState([]);

Далее создадим onClick -функцию addTodo для добавления элемента todo в массив Todos . Эта функция будет срабатывать при нажатии на кнопку Add .

Важно помнить, что состояние не должно изменяться напрямую. Поэтому необходимо сделать копию массива Todos , прежде чем добавлять в него элементы todo . Чтобы скопировать массив Todos и добавить в него элемент todo , воспользуемся оператором массивов spread .

const addTodo = () => setTodos([. todos, todo]);
>;

При добавлении нового элемента Todo в список нужно убедиться в том, что значение не будет пустым . Это можно сделать с помощью оператора if в функции addTodo , который проверяет наличие пустого значения. После того, как значение входа добавляется в список Todos , нужно очистить поле ввода.

Наконец, мы передаем эту функцию в обработчик onClick кнопки Add .

className="add-button" onClick=>

Этот коммит на GitHub отражает полный код до настоящего момента.

3. Отображение элементов Todo

Мы создадим ul с классом todo-list для отображения записей из списка Todos . Будем перебирать элементы в массиве методом map() и затем отображать их как li в элементе ul . Вызовем метод map() с двумя аргументами: значением текущего обрабатываемого элемента в массиве и его индексом. В данном случае index будет использоваться в качестве ключа li .

Для каждого элемента списка Todos создадим новый div с классом todo . Этот div будет содержать элемент li и кнопку delete для его удаления.

Прежде чем отображать список, нужно убедиться в том, что он не пуст. Для отображения элементов списка будет использоваться тернарный оператор. Если список окажется пустым, мы получим соответствующее сообщение.

Проект на данном этапе можно сверить с этим коммитом на GitHub.

Удаление элементов Todo

Начнем с создания функции onClick , которая срабатывает при нажатии на кнопку удаления. В этой функции удаления будет использоваться метод filter() , который создает новый массив со всеми записями, удовлетворяющими заданным критериям. В данном примере мы создадим новый массив Todos , содержащий все элементы, кроме удаляемого. В конце нужно будет обновить состояние с помощью вновь созданных Todos .

Передаем метод deleteTodo в обработчик onClick кнопки delete .

С кодом до этого момента можно свериться здесь.

Рефакторинг кода

Чтобы собирать введенные данные и показывать элементы Todos , можно перестроить приложение, создав два независимых компонента — TodoInput и TodoList . В каталоге src создайте два файла: TodoInput.js и TodoList.js . Наполните каждый из них содержимым, указанным в приведенных ниже фрагментах кода:

Затем импортируйте эти два компонента в App.js :

Ознакомившись с основами, вы можете начать создавать свое первое приложение на React.

  • React: основные ошибки мидл-разработчиков
  • Как начать работать программистом почти без опыта
  • React hooks: никакой магии, только массивы

Как сделать to do list

Иконка календаря

06.02.2023

Иконка чата

0

Иконка глаза

1 254

Приложение списка дел на JavaScript с простым интерфейсом. Эта программа создает пользовательский интерфейс HTML с текстовым вводом и кнопкой «Add task». При нажатии кнопки «Add task» текст входных данных добавляется как новая задача в элемент taskList на странице. У каждой задачи есть кнопка удаления, при нажатии которой задача удаляется из списка. Задачи хранятся в элементах HTML на странице, поэтому они не сохраняются после обновления страницы. Если вы хотите сохранить данные, вы можете использовать локальное хранилище или решение на стороне сервера.

To-Do List
Стили:
.container < display: flex; flex-direction: column; align-items: center; >.header < margin-top: 20px; >.form < margin-top: 20px; display: flex; align-items: center; >input[type="text"] < width: 60%; padding: 10px; font-size: 20px; border-radius: 10px; border: 1px solid gray; margin-right: 10px; >button < padding: 10px 20px; background-color: cornflowerblue; border: none; border-radius: 10px; color: white; font-size: 20px; cursor: pointer; >.tasks < margin-top: 20px; width: 60%; display: flex; flex-direction: column; >.task < background-color: beige; padding: 10px; border-radius: 10px; margin-top: 10px; display: flex; justify-content: space-between; align-items: center; >.task-text
const addTask = () => < const taskInput = document.getElementById("taskInput"); const task = taskInput.value; if (!task) return; const taskList = document.getElementById("taskList"); const newTask = document.createElement("div"); newTask.classList.add("task"); const taskText = document.createElement("div"); taskText.classList.add("task-text"); taskText.innerHTML = task; const deleteButton = document.createElement("button"); deleteButton.innerHTML = "Delete"; deleteButton.onclick = () =>< taskList.removeChild(newTask); >; newTask.appendChild(taskText); newTask.appendChild(deleteButton); taskList.appendChild(newTask); taskInput.value = ""; >;

Warning: Undefined variable $aff_bottom_mark in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 53

Warning: Undefined variable $aff_bottom_info in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 57

Warning: Undefined variable $aff_side_mark in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 83

Warning: Undefined variable $aff_side_info in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 84

  • Главная
  • Статьи
  • Видео
  • Обратная связь
  • Политика конфиденциальности
  • Пользовательское соглашение

Продолжая использовать этот сайт, вы даете согласие на обработку файлов Cookies.

© 2022 — 2024 Code Lab. При копировании материала ссылка на сайт обязательна.

Создание Простого Списка Дел (To-Do List) на HTML, CSS и JavaScript

Создание Простого Списка Дел (To-Do List) на HTML, CSS и JavaScript

В этой статье мы рассмотрим, как создать простое веб-приложение To-Do List с использованием HTML, CSS и JavaScript, включив весь код в одном файле для удобства. Список дел (To-Do List) — это популярное приложение, которое позволяет пользователям вести записи о задачах, которые им нужно выполнить. Мы создадим интерфейс, который позволит пользователям добавлять новые задачи и удалять их из списка.

.container background-color: #fff;
max-width: 400px;
margin: 20px auto;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
>

input[type=»text»] width: 70%;
padding: 8px;
>

button padding: 8px 20px;
background-color: #007BFF;
color: #fff;
border: none;
cursor: pointer;
>

ul list-style-type: none;
padding: 0;
>

li display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 0;
>

.delete color: red;
cursor: pointer;
>

Список дел

document.addEventListener(«DOMContentLoaded», function () const taskInput = document.getElementById(«taskInput»);
const addTaskButton = document.getElementById(«addTask»);
const taskList = document.getElementById(«taskList»);

addTaskButton.addEventListener(«click», function () const taskText = taskInput.value.trim();

if (taskText !== «») const listItem = document.createElement(«li»);
listItem.innerHTML = `
$
`;

listItem.querySelector(«.delete»).addEventListener(«click», function () taskList.removeChild(listItem);
>);

Создание простого списка дел с использованием HTML, CSS и JavaScript — это отличный способ начать изучение веб-разработки. Этот пример показывает, как можно включить весь код в одном файле для создания простого, но полезного веб-приложения To-Do List. Вы можете дорабатывать его и добавлять новые функции, чтобы сделать его более удобным, исходя из ваших потребностей.

Создано 02.11.2023 13:03:38

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2024 Русаков Михаил Юрьевич. Все права защищены.

    Как сделать — Список дел

    Узнать, как создать «список дел» с помощью CSS и JavaScript.

    Список дел

    Используйте CSS и JavaScript, чтобы создать «список дел» для организации и приоритизации ваших задач.

    Создайте список дел

    Шаг 1) Добавить HTML:

    Пример

    Мой список дел

    Шаг 2) Добавить CSS:

    Стиль заголовка и списка:

    Пример

    /* Включение отступа и границы в общую ширину и высоту элемента */
    * box-sizing: border-box;
    >

    /* Удалите поля и отступы из списка */
    ul margin: 0;
    padding: 0;
    >

    /* Стиль элементов списка */
    ul li cursor: pointer;
    position: relative;
    padding: 12px 8px 12px 40px;
    background: #eee;
    font-size: 18px;
    transition: 0.2s;

    /* сделайте элементы списка невыбираемыми */
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    >

    /* Установить все нечетные элементы списка в другой цвет (зебра) */
    ul li:nth-child(odd) background: #f9f9f9;
    >

    /* Более темный фон-цвет при наведении */
    ul li:hover background: #ddd;
    >

    /* При нажатии на кнопку, добавить цвет фона и вычеркнуть текст */
    ul li.checked background: #888;
    color: #fff;
    text-decoration: line-through;
    >

    /* Добавить «checked» отметить при нажатии на кнопку */
    ul li.checked::before content: »;
    position: absolute;
    border-color: #fff;
    border-style: solid;
    border-width: 0 2px 2px 0;
    top: 10px;
    left: 16px;
    transform: rotate(45deg);
    height: 15px;
    width: 7px;
    >

    /* Стиль кнопки «Закрыть» */
    .close position: absolute;
    right: 0;
    top: 0;
    padding: 12px 16px 12px 16px;
    >

    .close:hover background-color: #f44336;
    color: white;
    >

    /* Стиль заголовка */
    .header background-color: #f44336;
    padding: 30px 40px;
    color: white;
    text-align: center;
    >

    /* Очистить поплавки после заголовка */
    .header:after content: «»;
    display: table;
    clear: both;
    >

    /* Стиль ввода */
    input margin: 0;
    border: none;
    border-radius: 0;
    width: 75%;
    padding: 10px;
    float: left;
    font-size: 16px;
    >

    /* Стиль кнопки «Добавить» */
    .addBtn padding: 10px;
    width: 25%;
    background: #d9d9d9;
    color: #555;
    float: left;
    text-align: center;
    font-size: 16px;
    cursor: pointer;
    transition: 0.3s;
    border-radius: 0;
    >

    .addBtn:hover background-color: #bbb;
    >

    Шаг 3) Добавить JavaScript:

    Пример

    // Создайте кнопку «Закрыть» и добавьте ее к каждому элементу списка
    var myNodelist = document.getElementsByTagName(«LI»);
    var i;
    for (i = 0; i < myNodelist.length; i++) var span = document.createElement("SPAN");
    var txt = document.createTextNode(«\u00D7»);
    span.className = «close»;
    span.appendChild(txt);
    myNodelist[i].appendChild(span);
    >

    // Нажмите на кнопку «Закрыть», чтобы скрыть текущий элемент списка
    var close = document.getElementsByClassName(«close»);
    var i;
    for (i = 0; i < close.length; i++) close[i].onclick = function() var div = this.parentElement;
    div.style.display = «none»;
    >
    >

    // Добавить «checked» символ при нажатии на элемент списка
    var list = document.querySelector(‘ul’);
    list.addEventListener(‘click’, function(ev) if (ev.target.tagName === ‘LI’) ev.target.classList.toggle(‘checked’);
    >
    >, false);

    // Создайте новый элемент списка при нажатии на кнопку «Добавить»
    function newElement() var li = document.createElement(«li»);
    var inputValue = document.getElementById(«myInput»).value;
    var t = document.createTextNode(inputValue);
    li.appendChild(t);
    if (inputValue === ») alert(«Вы должны что-то написать!»);
    > else document.getElementById(«myUL»).appendChild(li);
    >
    document.getElementById(«myInput»).value = «»;

    var span = document.createElement(«SPAN»);
    var txt = document.createTextNode(«\u00D7»);
    span.className = «close»;
    span.appendChild(txt);
    li.appendChild(span);

    for (i = 0; i < close.length; i++) close[i].onclick = function() var div = this.parentElement;
    div.style.display = «none»;
    >
    >
    >

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *