Uppgradera din React-apps tillståndshantering med Jotai: ett enklare alternativ till Redux och perfekt för mindre projekt!
Att hantera tillstånd i småskaliga projekt är i allmänhet enkelt med hjälp av React-krokar och rekvisita. Men när applikationen växer och behovet av att dela och komma åt data över olika komponenter uppstår, leder det ofta till propellborrning. Tyvärr kan propellborrning snabbt belamra kodbasen och introducera skalbarhetsutmaningar.
Även om Redux erbjuder en fantastisk lösning för tillståndshantering, kan dess API vara överväldigande för relativt små projekt. Däremot Jotai, ett minimalt statsförvaltningsbibliotek som utnyttjar oberoende enheter av stater som kallas atomer för att hantera tillstånd, eliminerar utmaningar som propellborrning och möjliggör en mer okomplicerad och skalbar tillståndshantering närma sig.
Vad är Jotai och hur fungerar det?
Jotai är ett tillståndshanteringsbibliotek som erbjuder en enkel tillståndshanteringslösning i motsats till mer komplexa alternativ som Redux. Den använder oberoende tillståndsenheter som kallas atomer för att hantera tillstånd i React-applikationen.
Helst kan olika komponenter i applikationen komma åt och uppdatera dessa atomer med hjälp av en krok från Jotai som kallas använd Atom. Här är ett enkelt exempel på hur man skapar en Jotai-atom:
importera { atom } från'jotai';
konst countAtom = atom(1);
För att komma åt och arbeta med atomer i Jotai kan du helt enkelt använda använd Atom krok som, liksom andra Reagera krokar, gör att du kan komma åt och uppdatera värdet för ett tillstånd inom en funktionell komponent.
Här är ett exempel för att demonstrera dess användning:
importera { useAtom } från'jotai';
konst countAtom = atom(1);
fungeraMyComponent() {
konst [count, setCount] = useAtom (countAtom);
konst ökning = () => setCount((prevCount) => prevCount + 1);
lämna tillbaka (Räkna: {count}</p>
I det här exemplet är använd Atom krok används för att komma åt räknaAtom atom och dess tillhörande värde. De setCount funktionen används för att uppdatera värdet på atomen och alla associerade komponenter kommer automatiskt att återrenderas med det uppdaterade värdet.
Genom att bara trigga de berörda komponenterna minskar det onödiga omrenderingar i hela applikationen. Detta riktade tillvägagångssätt för omrendering förbättrar applikationens övergripande prestanda.
Med grunderna ur vägen, låt oss bygga en enkel To-do React-app för att bättre förstå Jotais tillståndshanteringsmöjligheter.
Du kan hitta detta projekts källkod i denna GitHub-förråd.
Statens ledning reagerar med hjälp av Jotai
För att starta, skapa en React-applikation. Alternativt kan du använda Vite för att skapa ett React-projekt. När du bygger en grundläggande React-applikation, fortsätt och installera Jotai i din applikation.
npm installera jotai
Därefter, för att använda Jotai i din applikation, måste du slå in hela appen med Leverantör komponent. Denna komponent innehåller lagret som fungerar som det centrala navet för att tillhandahålla atomvärden genom hela applikationen.
Dessutom låter det dig deklarera atomernas initiala tillstånd. Genom att slå in din app med Leverantör, får alla komponenter i applikationen tillgång till de atomer du har definierat, och de kan sedan interagera med och uppdatera tillståndet genom använd Atom krok.
importera { Leverantör } från"jotai";
Slå nu in applikationen i index.js eller main.jsx enligt nedanstående.
importera Reagera från'reagera'
importera ReactDOM från'reagera-dom/klient'
importera App från'./App.jsx'
importera'./index.css'
importera { Leverantör } från"jotai";
ReactDOM.createRoot(dokumentera.getElementById('rot')).framställa(
</Provider>
</React.StrictMode>,
)
Konfigurera ett datalager
Butiken fungerar som ett centralt arkiv för applikationens tillstånd. Den innehåller vanligtvis definitionen av atomer, väljare och alla andra relaterade funktioner som krävs för statlig förvaltning med Jotai.
I det här fallet hanterar den atomerna för att hantera listan med objekt för Att göra-applikationen. I den src katalog, skapa TodoStore.jsx fil och lägg till koden nedan.
importera { atom } från"jotai";
exporterakonst TodosAtom = atom([]);
Genom att skapa och exportera TodosAtom, kan du bekvämt interagera och uppdatera uppgifternas status över olika komponenter i applikationen.
Implementera att göra-applikationens funktionalitet
Nu när du har konfigurerat Jotai i React-applikationen och skapat en atom för att hantera applikationens tillstånd, gå framåt och skapa en enkel att göra-komponent som kommer att hantera funktionerna för att lägga till, ta bort och redigera föremål.
Skapa en ny komponenter/Todo.jsx fil i src katalog. Lägg till koden nedan i den här filen:
- Importera datalagret och använd Atom krok.
importera Reagera, { useState } från'reagera';
importera { TodosAtom } från'../TodoStore';
importera { useAtom } från'jotai'; - Skapa den funktionella komponenten och lägg till JSX-elementen.
Komponenten ger ett enkelt användargränssnitt för att hantera en lista med att göra-objekt.konst Att göra = () => {
lämna tillbaka (
platshållare="Ny uppgift"
värde={värde}
onChange={event => setValue (event.target.value)}
/>
exporterastandard Att göra;
- Implementera slutligen funktionerna för att lägga till och ta bort att göra.
konst [värde, setValue] = useState('');
konst [todos, setTodos] = useAtom (TodosAtom);konst handleAdd = () => {
om (value.trim() !== '') {
setTodos(prevTodos => [
...prevTodos,
{
id: Datum.nu(),
text: värde
},
]);
satt värde('');
}
};konst handleDelete = id => {
setTodos(prevTodos => prevTodos.filter(att göra => todo.id !== id));
};
De handtag Lägg till funktionen är ansvarig för att lägga till ett nytt att göra-objekt i listan med objekt. Först kontrollerar den om variabelns värde inte är tomt. Sedan skapar den ett nytt att göra-objekt med ett unikt ID och det angivna att-göra-objektet som innehåll.
De setTodos funktionen anropas sedan för att uppdatera listan över att göra-objekt i atomen genom att lägga till det nya objektet. Slutligen värde tillståndet återställs till en tom sträng efter tilläggsoperationen.
Å andra sidan hantera Radera funktion ansvarar för att ta bort ett att göra-objekt från listan. Den filtrerar bort att göra-objektet med det angivna ID: t från den befintliga listan genom att använda prevTodos.filter metod. Den uppdaterar sedan listan med hjälp av setTodos funktion – tar effektivt bort det angivna att göra-objektet från listan.
Använda Jotai för att hantera tillstånd i React-applikationer
Den här guiden har gett en introduktion till att använda Jotai som en statlig förvaltningslösning. Ändå finns det andra fantastiska funktioner som möjligheten att skapa asynkrona atomer speciellt utformade för att hantera tillstånd som involverar asynkrona operationer som API-anrop.
Dessutom kan du också skapa härledda atomer, som används för att beräkna och härleda värden från befintliga atomer, så att du kan hantera komplexa tillstånd baserat på andra delar av applikationen.
Genom att utnyttja dessa tillståndshanteringsfunktioner kan du skapa mer robusta och skalbara React-applikationer.