Função de item definido do React Native Async Storage
Estou usando armazenamento assíncrono em meu aplicativo de listagem de itens. O problema que estou enfrentando é que meu primeiro item não fica armazenado no assíncrono até que eu insira o segundo item. Estou salvando uma série de objetos com a ajuda de ganchos de reação. Por exemplo, se eu inserir itens como 1) Maçãs 2) Bananas, apenas as maçãs serão salvas no modo assíncrono, enquanto as bananas não serão salvas até que eu entre no terceiro item.
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()
}, [])
a função saveData é chamada dentro da função de aditivos que é invocada quando a caixa de texto é enviada
Respostas
Você se esqueceu de esperar para limpar os dados. É assíncrono por natureza também.
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");
}
};
Vou sugerir, basta substituí-lo. Não há necessidade de limpar.
Consulte Mais informação: https://react-native-async-storage.github.io/async-storage/docs/api#clear
:-D
Existe uma biblioteca de código aberto react -native-easy-app , que envolve o uso de AsyncStorage, através da qual você pode acessar quaisquer dados em AsncStorage de forma síncrona, talvez possa resolver seu problema, há um programa de amostra abaixo, talvez você possa consultar isto. código .