Creșteți nivelul de gestionare a stării aplicației dvs. React cu Jotai: o alternativă mai simplă la Redux și perfectă pentru proiecte mai mici!
Gestionarea stării în proiecte la scară mică este, în general, simplă, folosind cârlige și elemente de recuzită React. Cu toate acestea, pe măsură ce aplicația crește și apare nevoia de a partaja și de a accesa date între diferite componente, deseori duce la forarea cu suport. Din păcate, găurirea cu prop poate aglomera rapid baza de cod și poate introduce provocări de scalabilitate.
În timp ce Redux oferă o soluție excelentă de gestionare a stării, API-ul său poate fi copleșitor pentru proiecte relativ mici. În contrast, Jotai, o bibliotecă minimă de management de stat care folosește unități independente de state numite atomi pentru a gestiona stare, elimină provocările cum ar fi forarea prop și permite o gestionare a stării mai simplă și mai scalabilă abordare.
Ce este Jotai și cum funcționează?
Jotai este o bibliotecă de management de stat care oferă o soluție simplă de management de stat, în contrast cu alternative mai complexe precum Redux. Utilizează unități independente de stare numite atomi pentru a gestiona starea în aplicația React.
În mod ideal, diferite componente din aplicație accesează și actualizează acești atomi folosind un cârlig oferit de Jotai numit foloseșteAtom. Iată un exemplu simplu despre cum să creați un atom Jotai:
import { atom } din'jotai';
const countAtom = atom(1);
Pentru a accesa și a lucra cu atomi în Jotai, puteți utiliza pur și simplu foloseșteAtom cârlig care, ca altele Cârlige de reacție, vă permite să accesați și să actualizați valoarea unei stări într-o componentă funcțională.
Iată un exemplu pentru a demonstra utilizarea acestuia:
import { useAtom } din'jotai';
const countAtom = atom(1);
funcţieMyComponent() {
const [count, setCount] = useAtom (countAtom);
const increment = () => setCount((prevCount) => prevCount + 1);
întoarcere (Count: {count}</p>
În acest exemplu, foloseșteAtom cârlig este folosit pentru a accesa countAtom atom și valoarea asociată acestuia. The setCount funcția este utilizată pentru a actualiza valoarea atomului și orice componente asociate vor fi redate automat cu valoarea actualizată.
Prin declanșarea doar a componentelor afectate, reduce redările inutile în aplicație. Această abordare direcționată a redării îmbunătățește performanța generală a aplicației.
Cu elementele de bază la o parte, haideți să construim o aplicație simplă To-do React pentru a înțelege mai bine capacitățile de gestionare a statului ale lui Jotai.
Puteți găsi codul sursă al acestui proiect în aceasta Depozitul GitHub.
Managementul de stat în React folosind Jotai
Pentru a incepe, creați o aplicație React. Alternativ, puteți utilizați Vite pentru a configura un proiect React. Odată ce ați montat o aplicație React de bază, continuați și instalați Jotai în aplicația dvs.
npm instalează jotai
Apoi, pentru a utiliza Jotai în aplicația dvs., trebuie să împachetați întreaga aplicație cu Furnizor componentă. Această componentă conține magazinul care servește drept hub central pentru furnizarea de valori atomice în întreaga aplicație.
În plus, vă permite să declarați starea inițială a atomilor. Prin împachetarea aplicației dvs. cu Furnizor, toate componentele din aplicație obțin acces la atomii pe care i-ați definit și apoi pot interacționa cu și actualiza starea prin intermediul foloseșteAtom cârlig.
import { Furnizor } din"jotai";
Acum împachetați aplicația în index.js sau main.jsx așa cum se arată mai jos.
import Reacţiona din'reacţiona'
import ReactDOM din„react-dom/client”
import App din„./App.jsx”
import„./index.css”
import { Furnizor } din"jotai";
ReactDOM.createRoot(document.getElementById('rădăcină')).face(
</Provider>
</React.StrictMode>,
)
Configurați un depozit de date
Magazinul acționează ca un depozit central pentru starea aplicației. Conține de obicei definiția atomilor, selectoarelor și a oricăror alte funcții conexe necesare pentru managementul statului folosind Jotai.
În acest caz, gestionează atomii pentru gestionarea listei de articole pentru aplicația To-do. În src director, creați TodoStore.jsx fișier și adăugați codul de mai jos.
import { atom } din"jotai";
exportconst TodosAtom = atom([]);
Prin crearea și exportul TodosAtom, puteți interacționa confortabil și actualiza starea sarcinilor de făcut în diferite componente ale aplicației.
Implementați funcționalitatea aplicației To-Do
Acum că ați configurat Jotai în aplicația React și ați creat un atom pentru a gestiona starea aplicației, mergeți înainte și creați o componentă simplă de făcut, care se va ocupa de funcționalitățile de adăugare, ștergere și editare pentru sarcini de făcut articole.
Creaza un nou componente/Todo.jsx dosar în src director. În acest fișier, adăugați codul de mai jos:
- Importați depozitul de date și foloseșteAtom cârlig.
import Reacționează, { useState } din'reacţiona';
import { TodosAtom } din„../TodoStore”;
import { useAtom } din'jotai'; - Creați componenta funcțională și adăugați elementele JSX.
Componenta redă o interfață de utilizator simplă pentru gestionarea unei liste de elemente de făcut.const Todo = () => {
întoarcere (
substituent="Toate noi"
valoare={valoare}
onChange={event => setValue (event.target.value)}
/>
exportMod implicit A face;
- În cele din urmă, implementați funcțiile de adăugare și ștergere de sarcini.
const [valoare, setValue] = useState('');
const [todos, setTodos] = useAtom (TodosAtom);const handleAdd = () => {
dacă (value.trim() !== '') {
setTodos(prevTodos => [
...prevTodos,
{
id: Data.acum(),
text: valoare
},
]);
setValue('');
}
};const handleDelete = id => {
setTodos(prevTodos => prevTodos.filter(a face => todo.id !== id));
};
The handleAdd funcția este responsabilă pentru adăugarea unui nou articol de făcut la lista de articole. În primul rând, verifică dacă valoarea variabilei nu este goală. Apoi creează un nou articol de făcut cu un ID unic și elementul de făcut introdus ca conținut.
The setTodos funcția este apoi apelată pentru a actualiza lista de elemente de făcut din atom prin adăugarea noului articol. În cele din urmă, valoare starea este resetată la un șir gol după operația de adăugare.
Pe de altă parte, cel handleDelete funcția este responsabilă pentru eliminarea unui element de făcut din listă. Filtrează elementul de făcut folosind ID-ul specificat din lista existentă utilizând prevTodos.filter metodă. Apoi actualizează lista folosind setTodos funcție — ștergerea efectivă a elementului de rezolvat specificat din listă.
Utilizarea Jotai pentru a gestiona starea în aplicațiile React
Acest ghid a oferit o introducere în utilizarea Jotai ca soluție de management de stat. Cu toate acestea, există și alte caracteristici excelente, cum ar fi capacitatea de a crea atomi asincroni special concepute pentru gestionarea stării care implică operațiuni asincrone, cum ar fi apelurile API.
În plus, puteți crea și atomi derivați, care sunt utilizați pentru a calcula și a deriva valori din atomii existenți, permițându-vă să gestionați stări complexe pe baza altor părți ale aplicației.
Prin valorificarea acestor funcții de gestionare a stării, puteți crea aplicații React mai robuste și mai scalabile.