删除AsyncStorage React Native中的值

时间:2018-12-31 11:14:13

标签: javascript react-native

我有一个查找项目是否存在的功能。

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);
  }};

非常感谢所有用户的答复。

1 个答案:

答案 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"));