Как я могу получить доступ ко всем данным внутри массива без использования индекса реагировать на родной - PullRequest
0 голосов
/ 10 октября 2018

У меня есть этот массив локального хранилища, и я хочу получить доступ ко всем меткам и всем значениям без использования индекса и идентификатора. Как я могу сделать это с помощью собственного кода реакции Вот содержимое локального хранилища

и вот мой код

_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)}
              />

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

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")
  }
})
0 голосов
/ 10 октября 2018

Я не уверен, что полностью понял ваш вопрос, но исходя из того, что я понимаю, вы можете 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,
        });
      }
    });
  });
});
...