在AsyncStorage中正确设置setItem的方法

Bok*_*oky 8 react-native asyncstorage

我想在AsyncStorage.setItem里面用AsyncStorage.getItem。如何以正确的方式做到这一点?

我的代码如下:

createVehicle: function (vehicle, cb) {
    AsyncStorage.getItem('vehicle')
    .then(json => {

        let vehicles = [];

        if (json) {
            vehicles = JSON.parse(json);
            let o_vehicle = filter(vehicles, {autralis_id: vehicle.autralis_id});
            if (o_vehicle.length > 0) {
                cb(o_vehicle[0].id);
                return;
            } else {
                vehicles.push(vehicle);
            }
        } else {
            vehicles.push(vehicle);
        }
        AsyncStorage.setItem('vehicle', JSON.stringify(vehicles), () => {
            cb(vehicle.id + 1)
        });
    }).done();
},
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

ati*_*tel 8

I have created a service for Storage which can be used in the entire project as and when required by passing the required params. Have a look :

export default {
async setItem(key, value) {
    try {
        return await AsyncStorage.setItem(key, JSON.stringify(value));
    } catch (error) {
        // console.error('AsyncStorage#setItem error: ' + error.message);
    }
},
async getItem(key) {
    return await AsyncStorage.getItem(key)
        .then((result) => {
            if (result) {
                try {
                    result = JSON.parse(result);
                } catch (e) {
                    // console.error('AsyncStorage#getItem error deserializing JSON for key: ' + key, e.message);
                }
            }
            return result;
        });
},
async removeItem(key) {
    return await AsyncStorage.removeItem(key);
}
}
Run Code Online (Sandbox Code Playgroud)

This is by far the best practice I have come across till the date. You should use it too.


yif*_*n_z 1

请参考这个官方文档,它使用了inside getItemsetItem所以我认为你也可以使用setIteminside getItem,因为返回值只是 aPromise和。getItemsetItem

AsyncStorage.setItem('UID123', JSON.stringify(UID123_object), () => {
  AsyncStorage.mergeItem('UID123', JSON.stringify(UID123_delta), () => {
    AsyncStorage.getItem('UID123', (err, result) => {
      console.log(result);
    });
  });
});
Run Code Online (Sandbox Code Playgroud)