Reputation: 23
I have this code from the async storage docs. However, this only works for setting the state of string values. How can I do with an array of objects?
export default function App() {
const [value, setValue] = useState('value');
const { getItem, setItem } = useAsyncStorage('@storage_key');
const readItemFromStorage = async () => {
const item = await getItem();
setValue(item);
};
const writeItemToStorage = async newValue => {
await setItem(newValue);
setValue(newValue);
};
useEffect(() => {
readItemFromStorage();
}, []);
return (
<View style={{ margin: 40 }}>
<Text>Current value: {value}</Text>
<TouchableOpacity
onPress={() =>
writeItemToStorage(
Math.random()
.toString(36)
.substr(2, 5)
)
}
>
<Text>Update value</Text>
</TouchableOpacity>
</View>
);
}
Upvotes: 1
Views: 207
Reputation: 6741
The usage docs mention that only string
data can be stored.
See https://react-native-async-storage.github.io/async-storage/docs/usage
To store an Object
or Array
, you'll need to serialize it using JSON.stringify(myObj)
prior to writing to storage, and deserialize using JSON.parse(myObj)
immediately after reading from stroage.
Upvotes: 1
Reputation: 181
You can use JSON.parse(retrievedItemFromStorage)
to parse it to an Array/Object
Upvotes: 0