React Native Async Storage set item function
Sto utilizzando l'archiviazione asincrona nella mia app di elenco degli articoli. Il problema che sto affrontando è che il mio primo elemento non viene memorizzato in asincrono finché non inserisco il secondo elemento. Sto salvando una serie di oggetti con l'aiuto dei ganci di reazione Ad esempio, se inserisco oggetti come 1) Mele 2) Banane, solo le mele verranno salvate nell'asincronia mentre le banane non verranno salvate fino a quando non inserisco il terzo oggetto.
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()
}, [])
la funzione saveData viene chiamata all'interno della funzione additems che viene invocata quando viene inviata la casella di testo
Risposte
Hai dimenticato di attendere per cancellare i dati. È anche di natura asincrona.
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");
}
};
Suggerirò di ignorarlo. Non c'è bisogno di cancellare.
Leggi di più: https://react-native-async-storage.github.io/async-storage/docs/api#clear
MrGreen
C'è una libreria open source react-native-easy-app , che avvolge l'uso di AsyncStorage, attraverso la quale puoi accedere a qualsiasi dato in AsncStorage in modo sincrono, forse può risolvere il tuo problema, c'è un programma di esempio qui sotto, forse puoi fare riferimento a esso. codice .