Ismerje meg, hogyan implementálhatja ezt az aszinkron és globális kulcsérték-tároló rendszert a React Native alkalmazáshoz.

A React Native AsyncStorage egyszerűvé teszi az adatok tárolását és megőrzését a React Native alkalmazásban. Az AsyncStorage API-val az alkalmazáson belüli kis adatok egyszerű eseteit kezelheti anélkül, hogy az eszköz helyi tárolójára vagy összetett tárolórendszerére lenne szüksége.

Mi az a React Native AsyncStorage?

Az AsyncStorage API egy állandó kulcsérték tárolórendszer. Az API egy tartományt támogat JavaScript adattípusok, beleértve a karakterlánc-, logikai-, szám- és JSON-objektumokat.

Az AsyncStorage használatával tárolt adatok megmaradnak, és akkor is elérhetők maradnak, ha az alkalmazás bezárul vagy az eszköz újraindul. Ez teszi az AsyncStorage-ot ideális tárolási megoldássá az adatok gyorsítótárazására és kis mennyiségű alkalmazásállapot tárolására.

Milyen problémát old meg az AsyncStorage?

Az AsyncStorage megjelenése előtt a megfelelő adatgyorsítótárazás megbízhatatlan erőfeszítés volt. Tárolhatja az adatokat a helyi tárhelyen, amely nem képes megőrizni az adatokat az alkalmazás bezárásakor, vagy tárolhatja az adatokat egy relációs adatbázis-kezelő rendszerben (RDBMS). De túl bonyolultak ahhoz, hogy ehhez a használati esethez működjenek.

Az AsyncStorage megoldja ezeket a problémákat azáltal, hogy egyszerű, megbízható módot biztosít kis és ideiglenes adatok tárolására a React Native alkalmazásokban.

Az adatok AsyncStorage szolgáltatással történő tárolásához az adatokat először egy JSON-karakterláncba kell sorosítani. A JSON-karakterlánc ezután egy kulcsérték-rendszerben kerül tárolásra. Amikor megpróbál adatokat lekérni az AsyncStorage-ból, az adatokat a JSON-ból deszerializálja, majd az eredeti formátumban visszaküldi Önnek.

Ezek aszinkron programok amelyek a fő JavaScript-szál blokkolása nélkül futnak. Ideálissá teszi a gyakori hozzáférést igénylő adatok tárolására, mint például a felhasználói beállítások és az alkalmazás állapota.

AsyncStorage Methods

A telepítéshez a react-native-async-storage csomagot, futtassa a következő parancsot a projekt terminálján belül:

npm install @react-native-async-storage/async-storage

Mivel az AsyncStorage aszinkron jellegű, módszerei nem adnak azonnal eredményt. Ehelyett ígéretet adnak vissza, amely a művelet befejeztével megoldódik.

Használnia kell a async/wait szintaxist vagy hasonló technikát az AsyncStorage metódusok meghívásakor.

Írjon adatokat a setItem() és multiSet() metódusokkal

A setItem() és multiSet() metódusokat használunk az adott kulcs értékeinek beállítására. Ezek a módszerek paraméterként fogadják el a kulcsot és az értékeket.

A metódus egy ígéretet ad vissza, amely logikai értékkel oldódik meg, jelezve, hogy a művelet sikeres volt-e, vagy hibával utasítja el, ha a művelet sikertelen volt:

// Érték mentése a "user" kulcshoz
várja AsyncStorage.setItem("felhasználó", 'János');

// Több érték mentése a "user" kulcshoz
várja AsyncStorage.multiSet(["felhasználó", 'János', 'dámvadtehén']);

Adatok olvasása a getItem() és multiGet() metódusokkal

A... val getItem() módszerrel lehívhatja a mentett adatokat a tárolóból a lekérni kívánt érték kulcsával. Ha az átadott kulcs nem létezik, az ígéret hibával elutasítja:

const név = várja AsyncStorage.getItem("felhasználó");

A visszaadott érték getItem() egy karakterlánc. Ha más formátumban kell adatokat tárolnia, használhatja JSON.stringify() hogy az adatokat tárolás előtt karakterláncokká alakítsa át. Akkor használd JSON.parse() hogy visszaállítsa a karakterláncot az eredeti adattípusra lekérésekor.

Például:

// Mentse el az objektumot {name: "John Doe", kor: 30} a "user" kulcshoz
várja AsyncStorage.setItem("felhasználó", JSON.stringify({név: "Gipsz Jakab", kor: 30}));

// Szerezze be az objektumot a "user" kulcshoz
const felhasználó = JSON.parse(várja AsyncStorage.getItem("felhasználó"));

Használhatja a multiGet() módszer több kulcs-érték pár húzására. A metódus kulcsok tömbjét veszi fel, amelyeknek karakterláncoknak kell lenniük.

Adatok egyesítése a mergeItem() és multiMerge() metódusokkal

A MergeItem() és multiMerge() metódusok egyesítik az adott értéket az adott kulcshoz tartozó meglévő értékkel. A következőnek átadott érték MergeItem() bármilyen típusú adat lehet. Fontos azonban megjegyezni, hogy az AsyncStorage nem titkosítja az adatokat, így bárki, aki hozzáfér az eszközhöz, elolvashatja az adatokat:

várja AsyncStorage.mergeItem('név', "Jane Doe");

MergeItem() átveszi az egyesíteni kívánt érték kulcsát és az új értéket, amelyet össze szeretne olvasni a kulcs meglévő értékével. Használat multiMerge() hogy egynél több elemet egyesítsen egy kulcsértékkel.

Tárhely törlése a clear() módszerrel

A egyértelmű() módszer lehetővé teszi az AsyncStorage-ban tárolt összes elem eltávolítását. Különféle helyzetekben hasznos lehet, például amikor vissza kell állítania az alkalmazás állapotát a felhasználói kijelentkezés során vagy törölje a gyorsítótárazott adatokat a mobiltelefonján.

Például:

const clearData = async () => {
próbáld ki {
várja AsyncStorage.clear();

} fogás (e) {
konzol.error (e);
}
};

A fenti kód törli az összes AsyncStorage-ban tárolt kulcs-érték párt.

Ezenkívül visszahívási funkciót is biztosíthat egyértelmű(), amely a művelet befejezése után kerül meghívásra:

AsyncStorage.clear()
.akkor(() => {
// A törlési művelet befejeződött

})
.fogás((hiba) => {
konzol.error (hiba);
});

Vegye figyelembe, hogy a egyértelmű() metódus véglegesen törli az AsyncStorage-ban tárolt összes adatot.

Adatok gyorsítótárazása az AsyncStorage segítségével

Az adatok gyorsítótárazása bevett gyakorlat a mobilalkalmazások fejlesztésében a teljesítmény javítása és a hálózati kérések csökkentése érdekében. Az AsyncStorage segítségével könnyen gyorsítótárazhatja az adatokat a React Native alkalmazásokban.

Amikor hozzáfér egy adathoz, a rendszer először ellenőrzi, hogy az adatok már a gyorsítótárban vannak-e. Ha igen, akkor az adatok a gyorsítótárból kerülnek vissza. Ha nem, akkor a program lekéri az adatokat az állandóbb tárolóhelyről, és eltárolja a gyorsítótárban. A következő alkalommal, amikor hozzáfér az adatokhoz, az adatok a gyorsítótárból kerülnek vissza.

Tételezzük fel, hogy van egy olyan alkalmazása, amely megjeleníti az API-ból lekért könyvek listáját. A teljesítmény fokozása érdekében az AsyncStorage segítségével gyorsítótárba helyezheti a lekért könyvadatokat.

Íme egy példa ennek megvalósítására:

const [books, setBooks] = useState([]);

useEffect(() => {
const fetchBooks = async () => {
próbáld ki {
// Ellenőrizze, hogy a gyorsítótárazott adatok léteznek-e
const cachedData = várja AsyncStorage.getItem("gyorsítótárazott könyvek");

ha (cachedData !== nulla) {
// Ha a gyorsítótárazott adatok léteznek, elemezze és állítsa be kezdeti állapotként
setBooks(JSON.parse (cachedData));
} más {
// Ha a gyorsítótárazott adatok nem léteznek, kérje le az adatokat az API-ból
const válasz = várja fetch(' https://api.example.com/books');
const adatok = várja válasz.json();

// Gyorsítótárazza a lekért adatokat
várja AsyncStorage.setItem("gyorsítótárazott könyvek", JSON.stringify (adatok));

// A lekért adatok beállítása kezdeti állapotként
setBooks (adatok);
}
} fogás (hiba) {
konzol.error (hiba);
}
};

fetchBooks();
}, []);

Ebben a példában a useEffect horog a könyv adatainak lekéréséhez. Belül fetchBooks függvény hívásával ellenőrizze, hogy a tárolt adatok léteznek-e AsyncStorage.getItem('cachedBooks'). Ha a gyorsítótárazott adatok léteznek, elemezze azokat a segítségével JSON.parse és állítsa be kezdeti állapotként a segítségével setBooks. Ez lehetővé teszi a gyorsítótárazott adatok azonnali megjelenítését.

Ha a gyorsítótárazott adatok nem léteznek, lekérni az adatokat az API-ból a fetch() metódussal. Az adatok visszaadása után gyorsítótárazzuk azokat hívással AsyncStorage.setItem(). Ezután állítsa be a lekért adatokat kezdeti állapotként, biztosítva, hogy a további renderelések megjelenítsék a lekért adatokat.

A gyorsítótárazott könyveket most így jelenítheti meg:

import React, { useEffect, useState } tól től'reagál';
import { Nézet, szöveg, lapos lista } tól től"react-native";
import AsyncStorage tól től"@react-native-async-storage/async-storage";

const App = () => {
Visszatérés (

Könyvlista</Text>
data={books}
keyExtractor={(elem) => item.id.toString()}
renderItem={({ item }) => (

{item.title}</Text>
{item.author}</Text>
</View>
)}
/>
</View>
);
};

exportalapértelmezett App;

Az alkalmazás további indításakor vagy a képernyő újratöltésekor a gyorsítótárazott adatok megjelennek anélkül, hogy szükségtelen API-kéréseket kellene végrehajtani.

Az AsyncStorage használata a dinamikus adatbetöltéshez

A React Native AsyncStorage hatékony megoldást kínál az adatok tárolására és visszakeresésére. A gyorsítótárazási képességeket kihasználva növeli a teljesítményt és gyorsabb hozzáférést biztosít a tárolt adatokhoz.

Ha az AsyncStorage tudását olyan technikákkal kombinálja, mint az egyéni lapozás, akkor dinamikusan betöltheti és megjelenítheti az adatokat a React Native alkalmazásban. Ez lehetővé teszi a nagy adathalmazok hatékony kezelését.