реагировать родной: есть ли способ сообщения на экран, если Ax ios ID не удалось? - PullRequest
0 голосов
/ 05 марта 2020

есть способ сделать сообщение на экран, когда получить топор ios не удалось. как это сделать?

это мой пример кода:

getData = () => {
    this.setState({ isLoading: true, data: [] });
    var userPrincipalName = this.state.userPrincipalName;
    ///for debbugin only--NEED TO CHANGE "THE_NAME_USER" TO "userPrincipalName" IN THE AXIOS
    THE_NAME_USER = "apaz";
    axios
      .get(
        "https://harigotphat1.mekorot.co.il/ConfirmPackaotWS/OrderApprove/OrderApp_Get_Orders_To_Approve/" +
          THE_NAME_USER
      )
      .then(res => {
        this.setState({
          isLoading: false,
          data: res.data
        });
        InfoStore.setList(res.data);
      });
  };

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Существует несколько способов отображения сообщения об ошибке, когда что-то происходит в случае сбоя API.

Проверьте приведенный ниже пример и измените его в соответствии с вашими требованиями.

import React from "react";
import { FlatList, ActivityIndicator, Text, View } from "react-native";
import axios from "axios";

export default class Example extends React.Component {
    state = {
        isLoading: true,
        isError: false
    };

    componentDidMount() {
        return axios
            .get("https://reactnative.dev/movies.json")
            .then(response => {
                this.setState({
                    isLoading: false,
                    data: response.data.movies
                });
            })
            .catch(error => {
                this.setState({
                    isLoading: false,
                    isError: true
                });
            });
    }

    render() {
        return (
            <View style={{ flex: 1, paddingTop: 20 }}>
                {
                    // Shows loding indicator until data loads
                    this.state.isLoading ?
                        <View style={{ flex: 1, padding: 20 }}>
                            <ActivityIndicator />
                        </View>
                        :
                        // Shows an error if an error occured
                        this.state.isError ?
                            <View style={{ flex: 1, padding: 20, alignItems: 'center' }}>
                                <Text>Oops ? error while loading</Text>
                            </View>
                            :
                            // Display data after successful fetch 
                            <FlatList
                                data={this.state.data}
                                renderItem={({ item }) => (
                                    <Text>
                                        {item.title}, {item.releaseYear}
                                    </Text>
                                )}
                                keyExtractor={({ id }, index) => id}
                            />
                }
            </View>
        );
    }
}

Надеюсь, это поможет вам. Не стесняйтесь сомнений.

0 голосов
/ 05 марта 2020

Да, это возможно, используйте два оператора ".then", например:

axios.get("https://harigotphat1.mekorot.co.il/ConfirmPackaotWS/OrderApprove/OrderApp_Get_Orders_To_Approve/" +
          THE_NAME_USER
      ).then(response =>
  {
    const statusCode = response.status;
    const data = response.json();
    return Promise.all([statusCode, data]);
  }).then(res => {
                this.setState({
                    isLoading: false,
                    data: res.data
                });
                InfoStore.setList(res.data);
                // console.log("InfoStore get;List", InfoStore.getList.slice());
            }).catch(error => {
                console.log(error);
                alert(“your error is here”)
        });

Первый ".then" фактически обрабатывает HTTP-ответ вашего вызова API, если он не работает или произошла ошибка, тогда он выдает соответствующий код ошибки (например, в случае успеха «200 OK», а в случае ошибки возвращается 500 или другие коды ошибок). Вы можете легко показать предупреждение по этому коду состояния и соответственно проверить данные вызова API. описание кодов ошибок доступно по этой ссылке https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

...