I am saving few data as an object in array in my local storage using AsyncStorage
, I am able to do it in following way:
const [saveData, setSaveData] = useState([]);useEffect(() => { AsyncStorage.setItem('test4', JSON.stringify(saveData)) .then(json => console.log('success!')) .catch(error => console.log('error!'));}, [saveData]);const _submitWithWeather = async text => { let date = new Date(); const curDate = moment(date).format('MMM DD'); let newItem; newItem = { id: curDate, date: curDate, description: text, imageURL: photo, location: getLocation, temperature: getWeather, weatherType: geType, }; setSaveData(prevList => { prevList = prevList || []; if (prevList.length < 0) { return newItem; } else { return [...prevList, newItem]; } });};<TouchableOpacity onPress={() => { _submitWithWeather(text); }}><Text>save</Text></TouchableOpacity>
I am passing today's date as an id, because if the date on which I am saving my data, matches an object with same date then it should replace the object from array whose date is also today's data.
for example:
[ {"date": "Jan 02", "description": "1", "id": "Jan 02", "imageURL": "urlImage.jpg", "location": "location", "temperature": "13°C", "weatherType": "Clear" }]
today's date is jan 02
, and if I change the description or image and then click save , then this new object should replace the older object whose date is also jan 02