React Native Async Storage set item function

Nov 03 2020

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

1 xdeepakv Nov 10 2020 at 19:51

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

rufeng Nov 04 2020 at 10:03

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 .