如何在react-native中从AsyncStorage中删除项目

bakd9h0s  于 2022-11-17  发布在  React
关注(0)|答案(8)|浏览(186)

如何从AsyncStorage中删除一个项目?现在我正在尝试这个代码:

AsyncStorage.removeItem('userId');

但这对我不起作用。

2skhul33

2skhul331#

试试看:

async removeItemValue(key) {
    try {
        await AsyncStorage.removeItem(key);
        return true;
    }
    catch(exception) {
        return false;
    }
}
bxjv4tth

bxjv4tth2#

这是我所做的,有一个类似的问题。它的工作很好,当你想删除一个项目的基础上,其id。确保每个项目有一个唯一的id。

remove_user = async(userid) => {
    try{
        let usersJSON= await AsyncStorage.getItem('users');
        let usersArray = JSON.parse(usersJSON);
        alteredUsers = usersArray.filter(function(e){
            return e.id !== userid.id

        })
        AsyncStorage.setItem('users', JSON.stringify(alteredUsers));
        this.setState({
           users:alteredUsers
        })
    }
    catch(error){
        console.log(error)
    }
};
enxuqcxy

enxuqcxy3#

这看起来是正确的,但也许你试图从AsyncStorage读回太快了?它是异步的,所以更改不会立即应用,如果你试图在下面的行中获得它,你可能仍然会看到键。尝试用await调用AsyncStorage.removeItem,或者在回调中做你想做的事情。

8nuwlpux

8nuwlpux4#

这个delete方法通过传递index从数组中删除对象(这里我称为 id

async deleteData(id)  {
      try {
        this.state.item.splice(id, 1);
        await AsyncStorage.setItem("mylist",JSON.stringify(this.state.item))
        this.setState({ item: JSON.parse(await AsyncStorage.getItem("mylist")) })

      } catch (error) {
        console.log(error);
      }
    };

并使用 onPress 方法调用它,这里我使用 button 和pass index

<Button onPress={this.deleteData.bind(this,index)}>delete</Button>
4zcjmb1e

4zcjmb1e5#

这是AsyncStorage的框架代码。removeItem:

removeItem: function(
 key: string,
 callback?: ?(error: ?Error) => void
): Promise {
 return new Promise((resolve, reject) => {
  RCTAsyncStorage.multiRemove([key], function(errors) {
    var errs = convertErrors(errors);
    callback && callback(errs && errs[0]);
    if (errs) {
      reject(errs[0]);
    } else {
      resolve(null);
    }
  });
 });
}

正如你在上面看到的,它需要一个键(你在asyncstorage中设置的要删除的项的名称)和一个回调函数。确保你有正确的键和参数,它应该能正常工作。

sauutmhj

sauutmhj6#

使用removeItem()方法删除react中AsyncStorage的值。

try {
    await AsyncStorage.removeItem(key);
    console.log('Data removed')
}
catch(exception) {
    console.log(exception)
}
rqmkfv5c

rqmkfv5c7#

对于react-native,请尝试此操作

const deletCar = async () => {
        try {
            await AsyncStorage.removeItem('@storage_Key').then(() => {
               
                // props.navigation.navigate('same page name refresh ');   
               /* setprevCar({ carNumner: '', carModel: '' }) return  empty obj if deleted. */
            })

        }
        catch (exception) {
            return false;
        }

    }
inkz8wg9

inkz8wg98#

如果要删除选定列表:-

let key =[
    'visitorId',
    'visitorMobile',
    'visitorData',
  ]

await AsyncStorage.multiRemove(key)

相关问题