33 lines
998 B
JavaScript
33 lines
998 B
JavaScript
import { useEffect, useState } from "react";
|
|
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
|
|
const useAsyncStorage = (key, initialValue) => {
|
|
const [data, setData] = useState(initialValue);
|
|
const [retrievedFromStorage, setRetrievedFromStorage] = useState(false);
|
|
|
|
useEffect(() => {
|
|
(async () => {
|
|
try {
|
|
const value = await AsyncStorage.getItem(key);
|
|
console.log(`Retrieved data for ${key}: ${value}`);
|
|
setData(JSON.parse(value) || initialValue);
|
|
setRetrievedFromStorage(true);
|
|
} catch (error) {
|
|
console.error("useAsyncStorage getItem error:", error);
|
|
}
|
|
})();
|
|
}, [key, initialValue]);
|
|
|
|
const setNewData = async (value) => {
|
|
try {
|
|
await AsyncStorage.setItem(key, JSON.stringify(value));
|
|
setData(value);
|
|
} catch (error) {
|
|
console.error("useAsyncStorage setItem error:", error);
|
|
}
|
|
};
|
|
|
|
return [data, setNewData, retrievedFromStorage];
|
|
};
|
|
export default useAsyncStorage;
|