反应原生选择列表人口

时间:2017-01-21 05:24:43

标签: react-native

我正在使用此React Native程序包:https://github.com/gcanti/tcomb-form-native用于显示和捕获表单输入。

我根据自定义API响应显示选择列表的问题。

{
    "response": {
    "countries": [
      {
        "PK_country_id": 132,
        "country_code": "MY",
        "country_name": "Malaysia"
      },
      {
        "PK_country_id": 196,
        "country_code": "SG",
        "country_name": "Singapore"
      },
      {
        "PK_country_id": 32,
        "country_code": "BN",
        "country_name": "Brunei"
      },
      {
        "PK_country_id": 36,
        "country_code": "KH",
        "country_name": "Cambodia"
      }
    ]
  }
}

嗯,文档确实提到了根据枚举填充选择列表

const Country = t.enums({
  'IT': 'Italy',
  'US': 'United States'
}, 'Country');

有关将自定义API响应转换为提供的枚举格式的任何指导吗?如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:1)

您没有将功能传递给t.enums。只是结果转换。

例如,

const res = {
    "response": {
    "countries": [
      {
        "PK_country_id": 132,
        "country_code": "MY",
        "country_name": "Malaysia"
      },
      {
        "PK_country_id": 196,
        "country_code": "SG",
        "country_name": "Singapore"
      },
      {
        "PK_country_id": 32,
        "country_code": "BN",
        "country_name": "Brunei"
      },
      {
        "PK_country_id": 36,
        "country_code": "KH",
        "country_name": "Cambodia"
      }
    ]
  }
}

通过此转换,

let convertedResult = res.response.countries.reduce(function ( result, current ) {
    result[ current.country_code ] = current.country_name;
    return result;
}, {});

你得到了

{
    'MY': 'Malaysia',
    'SG': 'Singapore',
    'BN': 'Brunei',
    'KH': 'Cambodia' 
}

然后将其传递给t.enums

const Country = t.enums(convertedResult, 'Country');