Как получить данные из выборки внутри функции в React Native - PullRequest
1 голос
/ 27 января 2020

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

export default function HomeScreen() {  
  return (
    <View style={styles.container}>
      <Button title='show data' onPress={loadText}/>
      <Text>{loadText}</Text>
    </View>
  );
  function loadText(){
    fetch('http://192.168.88.253:5000/read')
      .then((response) => response.json())
      .then((responseJson) => {
        return (
          console.log(responseJson.city)
        );
      })
      .catch((error) => {
        console.error(error);
      });
  }
}

Если я понимаю, функция loadText должна возвращать значение responseJson.city в виде строки. Как я могу показать это в <View> или <Text>?

Ответы [ 3 ]

2 голосов
/ 27 января 2020
export default function HomeScreen() {  
  constructor(props){
    super(props);
    this.state = {
      city: ''
    }
  }
  return (
    <View style={styles.container}>
      <Button title='show data' onPress={() => this.loadText()}/>
      <Text>{this.state.city}</Text>
    </View>
  );
 loadText(){
    fetch('http://192.168.88.253:5000/read')
      .then((response) => response.json())
      .then((responseJson) => {
        this.setState({city: responseJson.city});
      })
      .catch((error) => {
        console.error(error);
      });
  }
}
0 голосов
/ 29 января 2020

Я решил это после прохождения React Hooks. Спасибо.

0 голосов
/ 27 января 2020

вы можете использовать alert() для отображения данных.

alert - это всплывающее окно, которое будет отображаться на экране мобильного телефона.

export default function HomeScreen() {  
  return (
    <View style={styles.container}>
      <Button title='show data' onPress={loadText}/>
      <Text>{loadText}</Text>
    </View>
  );
  function loadText(){
    fetch('http://192.168.88.253:5000/read')
      .then((response) => response.json())
      .then((responseJson) => {
        return (
          alert(JSON.stringfy(responseJson.city))
        );
      })
      .catch((error) => {
        alert(JSON.stringfy(error));
      });
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...