Функция элемента набора React Native Async Storage
Я использую асинхронное хранилище в моем приложении со списком товаров. Проблема, с которой я столкнулся, заключается в том, что мой первый элемент не сохраняется в асинхронном режиме, пока я не введу второй элемент. Я сохраняю массив объектов с помощью реагирующих крючков. Например, если я введу элементы как 1) Яблоки 2) Бананы, тогда только яблоки будут сохранены в асинхронном режиме, а бананы не будут сохранены, пока я не введу третий элемент.
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()
}, [])
функция saveData вызывается внутри функции additems, которая вызывается при отправке текстового поля
Ответы
Вы забыли дождаться очистки данных. Это тоже асинхронный характер.
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");
}
};
Я предложу, просто отмените это. Нет необходимости очищать.
Читать больше: https://react-native-async-storage.github.io/async-storage/docs/api#clear
:-D
Существует библиотека с открытым исходным кодом response-native-easy-app , которая обертывает использование AsyncStorage, с помощью которого вы можете синхронно получать доступ к любым данным в AsncStorage, возможно, это может решить вашу проблему, ниже приведен пример программы, возможно, вы можете обратиться к Это. код .