Fonction d'élément de jeu React Native Async Storage

Nov 03 2020

J'utilise le stockage asynchrone dans mon application de liste d'articles. Le problème auquel je suis confronté est que mon premier élément n'est pas stocké dans l'asynchrone tant que je n'ai pas entré le deuxième élément. J'enregistre un tableau d'objets à l'aide de crochets de réaction Par exemple, si j'entre des éléments comme 1) Pommes 2) Bananes, seules les pommes seront enregistrées dans l'async tandis que les bananes ne seront pas enregistrées tant que je n'aurai pas entré le troisième élément.

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 fonction saveData est appelée dans la fonction additems qui est évoquée lorsque la zone de texte est soumise

Réponses

1 xdeepakv Nov 10 2020 at 19:51

Vous avez oublié d'attendre pour effacer les données. Il est également de nature asynchrone.

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");
  }
};

Je vais suggérer, remplacez-le simplement. Pas besoin de clarifier.

Lire la suite: https://react-native-async-storage.github.io/async-storage/docs/api#clear

:-RÉ

rufeng Nov 04 2020 at 10:03

Il existe une bibliothèque open source react-native-easy-app , qui englobe l'utilisation d'AsyncStorage, à travers laquelle vous pouvez accéder à toutes les données d'AsncStorage de manière synchrone, peut-être qu'elle peut résoudre votre problème, il y a un exemple de programme ci-dessous, peut-être que vous pouvez vous référer à il. code .