Naučit se novou technologii, jako je React, může být matoucí bez praktických zkušeností. Jako vývojář je vytváření projektů v reálném světě jedním z nejúčinnějších způsobů, jak porozumět konceptům a funkcím.
MUO video dne POKRAČOVÁNÍ V OBSAHU POKRAČUJTE PŘEJÍMÁNÍM
Sledujte proces vytváření jednoduchého seznamu úkolů pomocí Reactu a rozšiřte své porozumění základům Reactu.
jak změnit ikonu ve Windows 10
Předpoklady pro vytvoření seznamu úkolů
Než začnete s tímto projektem, existuje několik požadavků. Musíte mít základní znalosti o HTML, CSS, JavaScript, ES6 a Reagovat. Musíte mít Node.js a npm, správce balíčků JavaScript . Potřebujete také editor kódu, jako je Visual Studio Code.
Zde je CSS, které bude tento projekt používat:
/* styles.css */
.App {
font-family: sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.Todo {
background-color: wheat;
text-align: center;
width: 50%;
padding: 20px;
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
margin: auto;
}
ul {
list-style-type: none;
padding: 10px;
margin: 0;
}
button {
width: 70px;
height: 35px;
background-color: sandybrown;
border: none;
font-size: 15px;
font-weight: 800;
border-radius: 4px;
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
}
.input {
border: none;
width: 340px;
height: 35px;
border-radius: 9px;
text-align: center;
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
}
.Top {
display: flex;
justify-content: center;
gap: 12px;
}
li {
display: flex;
justify-content: space-evenly;
align-items: center;
padding: 10px;
}
li:before {
content: "*";
margin-right: 5px;
}
1. Nastavte prostředí projektu
Tato fáze zahrnuje všechny příkazy a soubory potřebné k nastavení projektu. Chcete-li začít, vytvořte nový projekt React. Otevřete terminál a spusťte tento příkaz:
npx create-react-app todo-list
Instalace všech potřebných souborů a balíčků trvá několik minut. Vytvoří novou aplikaci React s názvem todo-list. Jakmile uvidíte něco takového, jste na správné cestě:
Přejděte do adresáře vašeho nově vytvořeného projektu pomocí tohoto příkazu:
cd todo-list
Spusťte svůj projekt lokálně pomocí tohoto příkazu:
npm start
A poté si projekt zobrazte ve svém prohlížeči na adrese http://localhost:3000/.
Ve složce src vašeho projektu je několik souborů, které nepotřebujete. Smazat tyto soubory: App.css , App.test.js , logo.svg , reportWebVitals.js , setupTests.js .
Ujistěte se, že hledáte příkazy k importu v dostupných souborech a odstraňte všechny odkazy na odstraněné soubory.
2. Vytvořte komponentu TodoList
Toto je komponenta, do které budeme implementovat všechny kódy potřebné pro seznam úkolů. Ve složce src vytvořte soubor s názvem „TodoList.js“. Poté, abyste otestovali, že vše funguje, jak má, přidejte následující kód:
import React from 'react';
const TodoList = () => {
return (
<div>
<h2>Hello World </h2>
</div>
);
};
export default TodoList;
Otevřete svůj soubor App.js, importujte komponentu TodoList a vykreslete ji uvnitř komponenty App. Bude to vypadat nějak takto:
jak hrát bluetooth hudbu v autě
import React from 'react';
import './styles.css'
import TodoList from './TodoList';
const App = () => {
return (
<div>
<TodoList />
</div>
);
};
export default App;
Přejděte do místního prohlížeče, který má spuštěný localhost:3000, a zkontrolujte, zda je tučně napsáno „Hello World“. Vše dobré? K dalšímu kroku.
3. Ovládejte vstup a změnu vstupu
Tento krok vám umožní spustit událost, když zadáte úkol do vstupního pole. Importujte háček useState z vašeho balíčku React. useState je hák React, který vám umožní efektivně spravovat stav .
import React, { useState } from 'react';
Použijte háček useState k vytvoření stavové proměnné s názvem „inputTask“ s počáteční hodnotou prázdného řetězce. Kromě toho přiřaďte funkci „setInputTask“ pro aktualizaci hodnoty „inputTask“ na základě zadání uživatele.
const [inputTask, setInputTask] = useState("");
Vytvořte funkci nazvanou „handleInputChange“ s parametrem události. Měl by aktualizovat stav inputTask pomocí funkce setInputTask. Získejte přístup k hodnotě cíle události pomocí event.target.value. To se spustí vždy, když se změní hodnota vstupního pole.
const handleInputChange = (event) => {
setInputTask(event.target.value);
};
Vraťte několik prvků JSX. První je nadpis, který zní „Můj seznam úkolů“, můžete se rozhodnout pro jakýkoli nadpis, který se vám líbí. Zahrňte do vstupních prvků několik atributů. type=“text” : Toto určuje váš typ vstupu jako text, value={inputTask} : Toto sváže hodnotu vstupního pole se stavovou proměnnou inputTask a zajistí, že bude odrážet aktuální hodnotu. onChange={handleInputChange} : Volá funkci handleInputChange, když se změní hodnota vstupního pole, čímž se aktualizuje stav inputTask.
<div className="Todo">
<h1>My To-Do List</h1>
<div className="Top">
<input className="input" type="text" value={inputTask}
onChange={handleInputChange} placeholder="Enter a task" />
Pokračujte vytvořením tlačítka, které přidá zadaný úkol do seznamu.
<button className="btn">ADD</button>
</div>
</div>
V této fázi bude výstup vašeho prohlížeče vypadat takto.
4. Přidejte funkcionalitu k tlačítku 'ADD'.
Použijte useState háček k vytvoření stavové proměnné s názvem „seznam“ s počáteční hodnotou prázdného pole. Proměnná „setList“ ukládá pole úkolů na základě vstupu uživatele.
const [list, setList] = useState([]);
Vytvořte funkci handleAddTodo, která se spustí, když uživatel klikne na tlačítko „ADD“ pro přidání nové úlohy. Přebírá parametr todo, který představuje nový úkol zadaný uživatelem. Poté vytvořte objekt newTask s jedinečným ID vygenerovaným pomocí Math.random() a vlastností todo, která obsahuje vstupní text.
Nyní aktualizujte stav seznamu pomocí operátoru spread […list] a vytvořte nové pole se stávajícími úkoly v seznamu. Připojte newTask na konec pole. To zajišťuje, že nezměníme pole původního stavu. Nakonec resetujte stav inputTask na prázdný řetězec a vymažte vstupní pole, když uživatel klikne na tlačítko.
žert telefonní číslo rozdat
const handleAddTodo = (todo) => {
const newTask = {
id: Math.random(),
todo: todo
};
setList([...list, newTask]);
setInputTask('');
};
Zahrnout onClick
atribut k prvku tlačítka s textem 'ADD'. Po kliknutí se spustí funkce handleAddTodo
, která přidá do stavu seznamu novou úlohu
<button onClick={() => handleAddTodo(inputTask)}>ADD</button>
V této fázi bude výstup vašeho prohlížeče vypadat stejně, ale pokud po zadání úkolu kliknete na tlačítko 'ADD', vstupní pole se vyprázdní. Pokud to funguje dobře, přejděte k dalšímu kroku.
5. Přidejte tlačítko Odstranit
Toto je poslední krok, který uživatelům umožní smazat svůj úkol, pokud udělali chybu nebo úkol dokončili. Vytvořte funkci handleDeleteTodo, která funguje jako obslužná rutina události, když uživatel klepne na tlačítko „Smazat“ pro konkrétní úlohu. Jako parametr bere id úlohy.
Uvnitř funkce použijte metodu filtru na poli seznamu k vytvoření nového pole newList, které vylučuje úlohu s odpovídajícím id. Metoda filtru prochází každou položku v poli seznamu a vrací nové pole obsahující pouze položky, které splňují danou podmínku. V tomto případě zkontrolujte, zda se ID každé úlohy rovná ID předaném jako parametr. Aktualizujte stav seznamu voláním setList(newList), který nastaví stav na nové filtrované pole a efektivně odstraní úlohu s odpovídajícím id ze seznamu.
const handleDeleteTodo = (id) => {
const newList = list.filter((todo) =>
todo.id !== id
);
setList(newList);
};
Pomocí metody map iterujte každou položku v poli seznamu a vraťte nové pole. Poté vytvořte prvek
Přístup k vlastnosti todo každého objektu úkolu. nakonec vytvořte tlačítko, které po kliknutí spustí funkci handleDeleteTodo s id odpovídajícího úkolu jako parametrem, což nám umožní odstranit úkol ze seznamu.
<ul>
{ list.map((todo) => (
<li className="task" key={todo.id}>
{todo.todo}
<button onClick={() => handleDeleteTodo(todo.id)}>Delete</button>
</li>
))}
</ul>
Takto by měl váš finální kód vypadat:
import React, { useState } from 'react';
const TodoList = () => {
const [inputTask, setInputTask] = useState('');
const [list, setList] = useState([]);
const handleAddTodo = () => {
const newTask = {
id: Math.random(),
todo: inputTask
};
setList([...list, newTask]);
setInputTask('');
};
const handleDeleteTodo = (id) => {
const newList = list.filter((todo) => todo.id !== id);
setList(newList);
};
const handleInputChange = (event) => {
setInputTask(event.target.value);
};
return (
<div className="Todo">
<h1>My To-Do List</h1>
<div className="Top">
<input className="input" type="text" value={inputTask}
onChange={handleInputChange} placeholder="Enter a task" />
<button className="btn" onClick={handleAddTodo}>ADD</button>
</div>
<ul>
{ list.map((todo) => (
<li className="task" key={todo.id}>
{todo.todo}
<button onClick={() => handleDeleteTodo(todo.id)}>
Delete
</button>
</li>
))}
</ul>
</div>
);
};
export default TodoList;
Takto bude vypadat váš konečný výstup, přičemž tlačítka pro přidání a odstranění budou fungovat podle očekávání.
Gratulujeme, vytvořili jste seznam úkolů, který přidává a odstraňuje úkoly. Můžete jít dále přidáním stylu a dalších funkcí.
Používejte Real World Projects, abyste se naučili React
Praxe může být efektivním způsobem učení. Umožňuje vám prakticky aplikovat koncepty a osvědčené postupy Reactu, čímž posílí vaše chápání rámce. Existuje spousta projektů, měli byste najít ty správné.