简体   繁体   English

从服务器(REST API)获取数据并在React Native中的多选选择器中设置数据

[英]Fetch data from server (REST API) and set data in a Multiple Select Picker in React Native

I am using REST API to fetch the data from server and I want to set that data in a multiple select picker in React Native but I am getting an error. 我正在使用REST API从服务器获取数据,我想在React Native中的多选选择器中设置该数据但我收到错误。 Here is my response from the server: 以下是我对服务器的回复:

[
  {
    "id": 22,
    "name": "Business",
    "slug": "business"
  },
  {
    "id": 17,
    "name": "Digital Marketing",
    "slug": "digital-marketing"
  },
  {
    "id": 23,
    "name": "Fun & Lifestyle",
    "slug": "fun-lifestyle"
  },
  {
    "id": 16,
    "name": "Mobiles",
    "slug": "mobiles"
  }]

I want to set the name in the drop down and select multiple value from it. 我想在下拉列表中设置名称并从中选择多个值。 Here is my code: 这是我的代码:

import React from 'react';
import { View, StyleSheet } from 'react-native';
import MultiSelect from 'react-native-multiple-select';

export default class PostJob extends React.Component {
  state = {
     LangPickerValueHolder: [],
    LangKnown: []
  }

  componentDidMount () {
    fetch('taxonomies/get_taxonomy?taxonomy=project_cat').then(response => response.json())
        .then(responseJson => {
          let langString = responseJson;

          let LangPickerValueHolder = langString.map((name, id) => { return { name, id }; });
          this.setState({
            LangPickerValueHolder
          });
          console.log(langArray);
        }).catch(error => {
          console.error(error);
        });
  }

  render () {
    return (
      <View style={styles.container}>
        <MultiSelect
          ref={(component) => { this.multiSelect = component; }}
          onSelectedItemsChange={(value) =>
            this.setState({ LangKnown: value })
          }
          uniqueKey="id"
          items={this.state.langString}
          selectedItems={this.state.LangKnown}
          onChangeInput={ (text) => console.log(text)}
          displayKey = 'name'
          submitButtonText="Submit" />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    backgroundColor: 'white',
    padding: 8
  }
});

But it is showing no item to display. 但它没有显示任何项目。

  1. Your mapping is wrong. 你的映射是错误的。 It should be langString.map(item => ({ name: item.name, id: item.id })) . 它应该是langString.map(item => ({ name: item.name, id: item.id }))
  2. items prop should be this.state.LangPickerValueHolder . items prop应该是this.state.LangPickerValueHolder

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM