我有这个本地存储阵列,我想访问所有标签和所有值,而无需使用索引和ID,我该如何使用react native来做到这一点 here is the content of local storage
这是我的代码
_onSelect = ( item ) => {
console.log(item);
};
async getElementsInLocalStorage() {
try {
let all_keys = await AsyncStorage.getAllKeys();
var count = 0;
for (i = 1; i <= all_keys.length; i++) {
let converter = JSON.parse(await AsyncStorage.getItem('national_num' + i));
if (converter != null) {
all_national_number[count] = {
'id' : count,
'label' : converter.national_number,
'value' : converter.national_number,
}
count = count +1 ;
}
}
this.setState({
isLoading: false
});
}
catch (error) {
alert(error);
}
}
<CheckboxFormX
style={{ width: 350 - 30 }}
dataSource={all_national_number}
itemShowKey="label"
itemCheckedKey="RNchecked"
iconSize={16}
formHorizontal={true}
labelHorizontal={false}
labelHorizontal={false}
onChecked={item => this._onSelect(item)}
/>
答案 0 :(得分:1)
async getAllData(){
try {
const keys = await AsyncStorage.getAllKeys();
const stores = await AsyncStorage.multiGet(keys);
return stores.map(([key, value], index)=> {
let {national_number} = JSON.parse(value);
return {
id: index,
label: national_number,
value: national_number,
key: key
}
})
}catch (error) {
console.log("ERROR", error);
return []
}
}
调用方法
getAllData().then((response)=> {
if(response.length){
console.log(response)
}else{
console.log("NO RECORD FOUND")
}
})
答案 1 :(得分:0)
我不确定我是否完全理解了您的问题,但是根据我的理解,您可以map
这样的值:
let all_national_number = [];
AsyncStorage.getAllKeys((err, keys) => {
// Here you have an array 'keys' of all the keys currently stored in AsyncStorage
AsyncStorage.multiGet(keys, (err, stores) => {
// Here you have an array 'stores' of values against 'keys' stored in AsyncStorage
stores.map((result, i) => {
// get at each store's key/value so you can work with it
if (result) {
all_national_number.push({
'id': i,
'label': JSON.parse(result[1]).national_number,
'value': JSON.parse(result[1]).national_number,
});
}
});
});
});