Извлекайте данные API с помощью приложения create-реагировать - PullRequest
0 голосов
/ 28 июня 2018

Я новичок в Reactionjs, и я использую create-реагировать на приложение, чтобы начать, но я не могу понять, как сделать вызов API для получения данных. Вот мой код:

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
// import { URL, KEY, city, countryCode } from './config.json';


const KEY = "d7ba7d7818dd3cec9ace78f9ad55722e";
const URL = "api.openweathermap.org/data/2.5";
const CITY = "Paris";

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      data: {}
    };
  }

  componentDidMount() {
    var url = `${URL}/weather?q=${CITY}&APPID=${KEY}&units=metric`;
    console.log(url);
    fetch(url).then(
      response => response.json()
    ).then(
      json => {
        console.log(json);
        this.setState({data: json});
      }
    );
  }

  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h1 className="App-title">Welcome to React</h1>
        </header>
        <p className="App-intro">
          To get started, edit <code>src/App.js</code> and save to reload.
        </p>
      </div>
    );
  }
}

export default App;

Метод рендеринга - это просто рендеринг по умолчанию из create-реакции-приложения, я не менял его. Я добавил только методы constructor и componentDidMount. Я пытаюсь получить некоторые данные из API OpenWeatherMap, добавить их в состояние и записать в консоль.

Запрос отлично работает в почтальоне, но вызывает эту ошибку в моем приложении: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 28 июня 2018

Включите протокол с URL для решения проблемы. Ответ на запрос извлечения не является успешным, поэтому, когда вы пытаетесь проанализировать ответ как JSON, он генерирует исключение, поскольку ответ не является допустимым JSON.

const KEY = "d7ba7d7818dd3cec9ace78f9ad55722e";
// Made change here
const URL = "https://api.openweathermap.org/data/2.5";
const CITY = "Paris";

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      data: {}
    };
  }

  componentDidMount() {
    var url = `${URL}/weather?q=${CITY}&APPID=${KEY}&units=metric`;
    console.log(url);
    fetch(url).then(
      response => response.json()
    ).then(
      json => {
        console.log(json);
        this.setState({data: json});
      }
    );
  }

  render() {
    return (
      <div className="App">
        <header className="App-header">
          <h1 className="App-title">Welcome to React</h1>
        </header>
        <p className="App-intro">
          To get started, edit <code>src/App.js</code> and save to reload.
        </p>
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById('example'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="example"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...