Как установить получение индекса конкретного массива ответа JSON в TextInput в React Native - PullRequest
0 голосов
/ 03 октября 2019

Я могу получить свой полный ответ в ответном нативном коде, как показано ниже для получения данных

import React, { Component } from 'react';
import {
  View,
  Text,
  TouchableOpacity,
  FlatList,
} from 'react-native';


export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      dataSource: [],
    }
  }

  componentDidMount() {
    let content = '/LoginPageLoad_Arr';
    const url = 'abc.asmx' + content;
    fetch(url, {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json; charset=utf-8',
      },
    })
      .then((response) => response.json())
      .then((responseJson) => {
        const result = JSON.parse(responseJson.d)

        this.setState({
          dataSource: result.Table1
        })
      }).catch((error) => {
        console.error(error);
      });
  }
  _renderItem = ({ item }) => (
    <TouchableOpacity>
      <View>
        <Text>
          {item.ID} = {item.VALUE}
        </Text>
      </View>
    </TouchableOpacity>
  )
  render() {
    return (
      <View>
        <FlatList
          data={this.state.dataSource}
          renderItem={this._renderItem}
        // keyExtractor={(item, index) => index}
        />
      </View>
    )
  }
}
the output is as follows
[The reponse is completedly fetched ][1]


  [1]: https://i.stack.imgur.com/sUJly.png

Моя задача - получить идентификатор и ЗНАЧЕНИЕ по индексу 0. Я попытался добавитьcode item.ID [0] это просто получить мне первую букву всех идентификаторов. Я хочу, чтобы полный полный идентификатор только индекс 0, чтобы установить в TextInput. Пожалуйста, если кто-то, как работал над этим, выручите меня.

1 Ответ

0 голосов
/ 03 октября 2019

Во-первых, лучший способ - вырезать вашу функцию в ComponentDidMount и использовать async вместо .then (), например:

ComponentDidMount(){
  this.callApiFunction();
}

async callApiFunction(){
  try{
    let content = '/LoginPageLoad_Arr';
      const url = 'abc.asmx' + content;
      const call = await fetch(url, {
        method: 'POST',
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json; charset=utf-8',
        },
      })
        call = call.json();
        call = JSON.parse(call.d)
        //If you want to browse an array, you can use the map function
        call.map((item, index) => {
        //And make condition here, for exemple the first element
        if(index == 0){
            //DO what u want 
            console.log(item)
            this.setState({
            dataSource: item
          })
        }
        
        })
          
        }).catch((error) => {
          console.error(error);
      });
    }
    catch(e){
      console.log(e)
    }
}

Надеюсь, это поможет вам

...