Не удается получить значение какой-либо скорости

#json #reactjs #api #load

#json #reactjs #API #загрузить

Вопрос:

Я пытаюсь загрузить данные из exchangeratesapi, но каким-то образом я не могу загрузить данные exchangerates!!

 componentDidMount() {
        this.setState({loading: true})
        fetch("https://api.exchangeratesapi.io/latest")
            .then(response => response.json())
            .then(data => {
                console.log(data)
                this.setState({
                    loading: false,
                    currency: data,
            })
            })
    }

  
   render() {
        var text = this.state.loading ? "loading..." : this.state.currency.BGN
        return (
            <div>
                <p>{this.state.currency.RON}</p>
            </div>
        )
    }
  

Я попробовал самый тупой способ загрузки данных.

 omponentDidMount() {
        this.setState({loading: true})
        fetch("https://api.exchangeratesapi.io/latest")
            .then(response => response.json())
            .then(data => {
                console.log(data)
                this.setState({
                    loading: false,
                    currency: data,
                    bulgaria:data.rates.BGN,
      })
            })
    }

  

И внутри render

 var text = this.state.loading ? "loading..." : this.state.currency.bulgaria
  

Но я считаю, что должен быть лучший способ сделать это.

Ответ №1:

Вы пытаетесь получить доступ к свойству напрямую из currency однако оно существует в rates .

Это неверно:

 {this.state.currency.RON}
  

Это должно быть:

 {this.state.currency.rates.RON}
  

Аналогично, созданная вами переменная text нигде не используется. ИМХО это должно быть так:

     render() {
            const {loading, currency} = this.state;
            console.log(currency); //only for debugging
            return (
                { loading? 'Loading...' : (
                <div>
                    <p>{currency.rates.RON}</p>
                </div>)
                }
            )
        }
  

Комментарии:

1. Я пытался {this.state.currency.rates.RON} , но это вообще не работает, это дало мне «TypeError: не удается прочитать свойство ‘RON’ из неопределенного»

2. @TingYuanLu странно! Не могли бы вы утешить значения currency и посмотреть, есть ли у него ответ службы или нет. Проверьте обновленный ответ.