我有一个查找项目是否存在的功能。
addNewPerson(name) {
AsyncStorage.getItem('savedPersons', (err, result) => {
const name = [name];
if (result !== null) {
var newIds = JSON.parse(result).concat(name);
AsyncStorage.setItem('savedPersons', JSON.stringify(newIds));
console.log('Data Found', result);
} else {
AsyncStorage.setItem('savedPersons', JSON.stringify(name));
console.log('Data Added', name);
}
});
}
现在,我想删除“ savedPersons”中的某些特定人。
我尝试过以下代码:
AsyncStorage.removeItem('savedPersons','Uzuner');
错误文本为:“回调不是函数”。
如何删除asycnStorage阵列中的项目?
已解决:
我为删除项目编写了这段代码。
removePost = async (post_id) => {
try {
const posts = await AsyncStorage.getItem('savedPersons');
let postsFav = JSON.parse(posts);
const postsItems = postsFav.filter(function(e){ return e !== post_id });
// updating 'posts' with the updated 'postsItems'
await AsyncStorage.setItem('savedPersons', JSON.stringify(postsItems));
} catch(error) {
console.log('error: ', error);
}};
非常感谢所有用户的答复。
答案 0 :(得分:1)
AsyncStorage.removeItem是一个异步任务,它返回诺言或回调。另外,如果要从阵列中删除元素,则需要先获取该阵列,然后删除该元素并将其推回本地存储。像这样的东西
AsyncStorage.getItem("savedPersons")
.then(persons =>{
const index = persons.indexOf("Uzuner");
const modifiedPersons = persons.splice(index,1);
AsyncStorage.setItem("savedPersons",modifiedPersons)
.then(() => console.log(done))
.catch((error) => console.log("error"));
})
.catch(error => console.log("Error while retrieving the savePersons"));