React Native Async Storage set item function
Korzystam z magazynu asynchronicznego w mojej aplikacji z listą przedmiotów. Problem, z którym się zmagam, polega na tym, że moja pierwsza pozycja nie jest przechowywana w asynchronicznej pozycji, dopóki nie wejdę do drugiej pozycji. zapisuję tablicę obiektów za pomocą haków reagowania Np. jeśli wprowadzę pozycje jako 1) Jabłka 2) Banany to tylko jabłka zostaną zapisane w asynchronicznej, a banany nie zostaną zapisane, dopóki nie przejdę do trzeciej pozycji.
const [getWant, setwant] = useState([]);
const saveData = async () => {
AsyncStorage.clear()
try {
await AsyncStorage.setItem("@pantry102", JSON.stringify(getWant))
console.log(getWant)
alert('Data successfully saved')
} catch (e) {
alert('Failed to save the data to the storage')
}
}
const readData = async () => {
try {
const userData= await AsyncStorage.getItem("@pantry102")
const userData2 = JSON.parse(userData)
if (userData2 !== null) {
console.log(userData2)
setwant(userData2)
}
} catch (e) {
alert('Failed to fetch the data from storage')
}
}
useEffect(() => {
readData()
}, [])
funkcja saveData jest wywoływana wewnątrz funkcji additems, która jest wywoływana po przesłaniu pola tekstowego
Odpowiedzi
Zapomniałeś czekać na wyczyszczenie danych. Ma również charakter asynchroniczny.
await AsyncStorage.clear()
const saveData = async () => {
try {
await AsyncStorage.clear();
await AsyncStorage.setItem("@pantry102", JSON.stringify(getWant));
console.log(getWant);
alert("Data successfully saved");
} catch (e) {
alert("Failed to save the data to the storage");
}
};
Zasugeruję, po prostu to zastąp. Nie ma potrzeby czyszczenia.
Czytaj więcej: https://react-native-async-storage.github.io/async-storage/docs/api#clear
:-RE
Istnieje biblioteka open source React -native-easy-app , która otacza użycie AsyncStorage, dzięki której można uzyskać dostęp do dowolnych danych w AsncStorage synchronicznie, może to rozwiąże twój problem, poniżej jest przykładowy program, może możesz się odnieść do to. kod .