Mokymasis naujos technologijos, tokios kaip „React“, gali būti painu be praktinės patirties. Kaip kūrėjas, realaus pasaulio projektų kūrimas yra vienas iš efektyviausių būdų suprasti sąvokas ir funkcijas.
MUO dienos video SLĖKITE, KAD TĘSITE SU TURINIU
Sekite paprasto darbų sąrašo kūrimo procesą naudodami „React“ ir patobulinkite savo „React“ pagrindų supratimą.
Būtinos užduočių sąrašo sudarymo sąlygos
Prieš pradedant šį projektą, yra keletas reikalavimų. Turite turėti pagrindinį supratimą apie šiuos dalykus: HTML, CSS, JavaScript, ES6 ir Reaguoti. Turite turėti Node.js ir npm, „JavaScript“ paketų tvarkyklė . Taip pat reikia kodo rengyklės, pvz., „Visual Studio Code“.
Štai CSS, kurį naudos šis projektas:
/* 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. Nustatyti projekto aplinką
Šis etapas apima visas komandas ir failus, reikalingus projektui nustatyti. Norėdami pradėti, sukurkite naują „React“ projektą. Atidarykite terminalą ir paleiskite šią komandą:
npx create-react-app todo-list
Tai užtruks kelias minutes, kol bus įdiegti visi reikalingi failai ir paketai. Tai sukuria naują „React“ programą, pavadintą „Todo-list“. Kai pamatysite kažką panašaus, eisite teisingu keliu:
Eikite į naujai sukurto projekto katalogą naudodami šią komandą:
cd todo-list
Vykdykite projektą vietoje naudodami šią komandą:
npm start
Tada peržiūrėkite projektą savo naršyklėje adresu http://localhost:3000/.
Jūsų projekto src aplanke yra keletas failų, kurių jums nereikia. Ištrinkite šiuos failus: App.css , App.test.js , logotipas.svg , reportWebVitals.js , setupTests.js .
Įsitikinkite, kad esamuose failuose ieškote importavimo teiginių ir pašalinkite visas nuorodas į ištrintus failus.
kaip pašalinti virusą iš „Android“ telefono
2. Sukurkite TodoList komponentą
Tai yra komponentas, kurį įdiegsime visus užduočių sąrašui reikalingus kodus. Savo src aplanke sukurkite failą pavadinimu „TodoList.js“. Tada norėdami patikrinti, ar viskas veikia taip, kaip turėtų, pridėkite šį kodą:
import React from 'react';
const TodoList = () => {
return (
<div>
<h2>Hello World </h2>
</div>
);
};
export default TodoList;
Atidarykite failą App.js, importuokite TodoList komponentą ir pateikite jį programos komponente. Tai atrodys maždaug taip:
prijunkite „Android“ telefoną prie monitoriaus ir klaviatūros
import React from 'react';
import './styles.css'
import TodoList from './TodoList';
const App = () => {
return (
<div>
<TodoList />
</div>
);
};
export default App;
Eikite į vietinę naršyklę, kurioje veikia „localhost:3000“, ir patikrinkite, ar drąsiai parašyta „Hello World“. Viskas gerai? Į kitą žingsnį.
3. Valdykite įvestį ir įvesties keitimą
Šis veiksmas leidžia suaktyvinti įvykį, kai įvedate užduotį įvesties laukelyje. Importuokite „useState“ kabliuką iš „React“ paketo. useState yra „React Hook“, leidžiantis efektyviai valdyti būseną .
import React, { useState } from 'react';
Naudokite kabliuką useState, kad sukurtumėte būsenos kintamąjį pavadinimu „inputTask“, kurio pradinė vertė yra tuščia eilutė. Be to, priskirkite funkciją „setInputTask“, kad atnaujintumėte „inputTask“ reikšmę pagal vartotojo įvestį.
const [inputTask, setInputTask] = useState("");
Sukurkite funkciją, pavadintą „handleInputChange“, įtraukdami įvykio parametrą. Ji turėtų atnaujinti inputTask būseną naudodama funkciją setInputTask. Pasiekite įvykio tikslo vertę naudodami event.target.value. Tai veiks, kai pasikeis įvesties lauko reikšmė.
const handleInputChange = (event) => {
setInputTask(event.target.value);
};
Grąžinkite keletą JSX elementų. Pirmoji yra antraštė, kuri parašyta „Mano darbų sąrašas“. Galite pasirinkti bet kurią jums patinkančią antraštę. Į įvesties elementus įtraukite keletą atributų. tipas = 'tekstas' : nurodomas įvesties tipas kaip tekstas, value={inputTask} : Tai susieja įvesties lauko reikšmę su inputTask būsenos kintamuoju, užtikrinant, kad jis atspindėtų dabartinę reikšmę. onChange={handleInputChange} : Pasikeitus įvesties lauko vertei, iškviečiama HandelInputChange funkcija ir atnaujinama inputTask būsena.
<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" />
Toliau sukurkite mygtuką, kuris įtrauks įvestą užduotį į sąrašą.
<button className="btn">ADD</button>
</div>
</div>
Šiame etape taip atrodys jūsų naršyklės išvestis.
4. Pridėkite funkcionalumą prie mygtuko „PRIDĖTI“.
Naudoti useState kabliukas, kad sukurtumėte būsenos kintamąjį pavadinimu „list“ su pradine tuščio masyvo reikšme. Kintamasis „setList“ saugo užduočių masyvą, pagrįstą vartotojo įvestimi.
const [list, setList] = useState([]);
Sukurkite funkciją handleAddTodo, kuri bus paleista, kai vartotojas spustelėja mygtuką „PRIDĖTI“, kad pridėtų naują užduotį. Tam reikia todo parametro, kuris parodo naują vartotojo įvestą užduotį. Tada sukurkite objektą newTask su unikaliu ID, sugeneruotu naudojant Math.random(), ir todo ypatybę, kurioje yra įvesties tekstas.
Toliau atnaujinkite sąrašo būseną naudodami sklaidos operatorių […list], kad sukurtumėte naują masyvą su sąraše esančiomis užduotimis. Prie masyvo pabaigos pridėkite naują užduotį. Tai užtikrina, kad nepakeisime pradinės būsenos masyvo. Galiausiai iš naujo nustatykite inputTask būseną į tuščią eilutę ir išvalykite įvesties lauką, kai vartotojas spustelėja mygtuką.
const handleAddTodo = (todo) => {
const newTask = {
id: Math.random(),
todo: todo
};
setList([...list, newTask]);
setInputTask('');
};
Įtraukti onClick
atributas mygtuko elementui su tekstu 'PRIDĖTI'. Spustelėjus, suaktyvinama funkcija handleAddTodo
, kuri į sąrašo būseną prideda naują užduotį
<button onClick={() => handleAddTodo(inputTask)}>ADD</button>
Šiame etape jūsų naršyklės išvestis atrodys taip pat, bet jei įvedę užduotį spustelėsite mygtuką „PRIDĖTI“, įvesties laukas bus ištuštintas. Jei viskas gerai, pereikite prie kito veiksmo.
5. Pridėkite trynimo mygtuką
Tai paskutinis veiksmas, leidžiantis vartotojams ištrinti savo užduotį, jei jie padarė klaidą arba atliko užduotį. Sukurkite „handleDeleteTodo“ funkciją, kuri veikia kaip įvykių tvarkytoja, kai vartotojas spustelėja mygtuką „Ištrinti“ tam tikrai užduočiai atlikti. Kaip parametrą jis naudoja užduoties ID.
Funkcijoje naudokite sąrašo masyve esantį filtravimo metodą, kad sukurtumėte naują masyvą newList, kuris neįtrauktų užduoties su atitinkamu ID. Filtro metodas kartojasi per kiekvieną sąrašo masyvo elementą ir grąžina naują masyvą, kuriame yra tik tie elementai, kurie atitinka nurodytą sąlygą. Tokiu atveju patikrinkite, ar kiekvienos užduoties ID yra lygus ID, perduotam kaip parametras. Atnaujinkite sąrašo būseną iškviesdami setList(newList), kuri nustato būseną į naują filtruotą masyvą, veiksmingai pašalindama užduotį su atitinkamu ID iš sąrašo.
const handleDeleteTodo = (id) => {
const newList = list.filter((todo) =>
todo.id !== id
);
setList(newList);
};
Naudokite žemėlapio metodą, kad pakartotumėte kiekvieną sąrašo masyvo elementą ir grąžintumėte naują masyvą. Tada sukurkite elementą
Pasiekite kiekvieno todo objekto todo savybę. galiausiai sukurkite mygtuką, kurį spustelėjus, suaktyvinama handDeleteTodo funkcija su atitinkamos užduoties ID kaip parametru, leidžianti ištrinti užduotį iš sąrašo.
<ul>
{ list.map((todo) => (
<li className="task" key={todo.id}>
{todo.todo}
<button onClick={() => handleDeleteTodo(todo.id)}>Delete</button>
</li>
))}
</ul>
Štai kaip turėtų atrodyti jūsų galutinis kodas:
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;
Toks bus jūsų galutinis rezultatas, o mygtukai pridėti ir ištrinti veiks taip, kaip tikėtasi.
Sveikiname, sukūrėte darbų sąrašą, kuriame pridedamos ir pašalinamos užduotys. Galite eiti toliau pridėdami stiliaus ir daugiau funkcijų.
kaip sukurti pasirinktinį „snapchat“ filtrą
Naudokite realaus pasaulio projektus, kad išmoktumėte reaguoti
Praktika gali būti veiksmingas mokymosi būdas. Tai leidžia praktiškai pritaikyti „React“ koncepcijas ir geriausią praktiką, o tai sustiprina jūsų supratimą apie sistemą. Yra daugybė projektų, jums reikia rasti tinkamus.