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)
这是正确的方法吗?
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.
请参考这个官方文档,它使用了inside getItem
,setItem
所以我认为你也可以使用setItem
inside getItem
,因为返回值只是 aPromise
和。getItem
setItem
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)
归档时间: |
|
查看次数: |
10937 次 |
最近记录: |