React Native Async Storage set item function

Nov 03 2020

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

1 xdeepakv Nov 10 2020 at 19:51

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

rufeng Nov 04 2020 at 10:03

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 .