【问题标题】:React native Material drop down get id from json dataReact Native Material 下拉菜单从 json 数据中获取 id
【发布时间】:2019-04-22 05:45:53
【问题描述】:

我在我的 react native 项目中使用了react-native-material-dropdown。我正在从API 获取数据。

问题是我在下拉列表中成功获取名称,但我想要该选定名称的hotelId。我无法解析下拉列表中的整个 JSON

JSON

    {
            "message": "Success",
            "notificationCount": 0,
            "result": [{
                "hotelId": "india3c71a2b8-05d3-476e-825a-f31e08ac3bdc",
                "name": "Hotel Samrat"
            }, {
                "hotelId": "indiae4ef0d05-f46e-48f3-9bce-a37bfde089a4",
                "name": "Hotel Kalinga Ashok"
            }],
            "status": 1,
            "totalRecord": 2,
            "scopeId": ""
   }

我已通过以下方式解析数据:

var count = Object.keys(responseJSON.result).length;
            let drop_down_data = [];
            for (var i = 0; i < count; i++) {
                console.log(responseJSON.result[i].name) // I need to add 
                drop_down_data.push({ value: responseJSON.result[i].name }); // Create your array of data
            }

并在下拉列表中添加了该数组:

  <Dropdown
       label={'Select hotel name'}
       data={this.state.data}
       baseColor='#79292F'
  />

我已经阅读了所有堆栈溢出的答案。但我无法得到确切的答案。

【问题讨论】:

  • @ma_dev_15 我试过无法获取列表
  • 所以问那个问题,你也可以使用 valueExtractor 回调来获取数据
  • @ma_dev_15 我不知道有多少反应,请您发表答案

标签: android reactjs react-native dropdown


【解决方案1】:

您可以将数据传递为{value : "", label : ""}

var count = Object.keys(responseJSON.result).length;
            let drop_down_data = [];
            for (var i = 0; i < count; i++) {
                console.log(responseJSON.result[i].name) // I need to add 
                drop_down_data.push({
                value : responseJSON.result[i]. hotelId
                label: responseJSON.result[i].name 
               }); // Create your array of data
            }

//pass your drop_down data to dropdown component 
  <Dropdown
       label={'Select hotel name'}
       data={YOURFINALDATAOBJECT}
       baseColor='#79292F'
  />

【讨论】:

  • 我还有一个问题,您能帮帮我吗?我还有一个包含名称、ID 和价格的 json。所以我想要两个值和一个标签。对此有何建议?
【解决方案2】:
const drop_down_data = responseJSON.result.map(element => ({
  value: element.name,
  label: element.hotelId
}));

valueExtractor = val => {
  console.log(val);
};

<Dropdown
  label={"Select hotel name"}
  data={this.state.data}
  baseColor="#79292F"
  valueExtractor={this.valueExtractor}
/>;

【讨论】:

  • 我还有一个问题,您能帮帮我吗?我还有一个包含名称、ID 和价格的 json。所以我想要两个值和一个标签。对此有何建议?
  • 你能解释一下我如何使用它吗?我的 json 是 { "message": "Success", "notificationCount": 0, "result": [ { "id": 1, "name": "From Airport", "price": 200 }, { "id" : 2, "name": "From Railway Station", "price": 100 } ], "status": 1, "totalRecord": 2, "scopeId": "" }
  • 在标签中你可以使用{ id: 1, price: 2000 }传递JSON对象
猜你喜欢
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多