编程语言
首页 > 编程语言> > javascript-在React.js中获取不起作用

javascript-在React.js中获取不起作用

作者:互联网

我正在尝试在react.js中执行获取请求,但似乎没有获取任何东西.我觉得这是一个愚蠢的错误,我没有注意到.任何帮助,将不胜感激.

import React, {Component} from 'react';
import './App.css';
import TimeSearch from './TimeSearch.jsx';
import CurrentTime from './CurrentTime.jsx';

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

  handleFormSubmit(item) {
    var url = 'https://api.aladhan.com/timingsByCity?city=' + item + '&country=US&method=2';

    fetch(url)
      .then(response => {
        return response.json();
      })
      .then(json => {
        this.setState({
          Fajir: json.Fajir,
          Sunrise: json.Sunrise,
          Dhuhr: json.Dhuhr
        });
      });
  }

  render() {
    return (
      <div className="App">
        <h1>Welcome to Prayer Times!</h1>
        <h6>Search for times in any city in the United States</h6>
        <TimeSearch
          handleFormSubmit={item => {
            this.handleFormSubmit(item);
          }}
        />
        <CurrentTime Fajir={this.state.Fajir} />
      </div>
    );
  }
}

export default App;

// Time Search Component

import React, {Component} from 'react';

class TimeSearch extends Component {
  render() {
    return (
      <ul>
        <form onSubmit={e => this.handleFormSubmit(e)}>
          <input type="text" id="lookUp" placeholder="Search by City" ref="seachBox" />
          <button type="submit" id="searchButtons">
            {' '}
            Search{' '}
          </button>
        </form>{' '}
      </ul>
    );
  }
  handleFormSubmit(e) {
    e.preventDefault();
    var item = this.refs.searchBox.value;
    this.props.handleFormSubmit(item);
  }
}

export default TimeSearch;

// Current Time Component

import React, {Component} from 'react';

class CurrentTime extends Component {
  render() {
    return (
      <div id="time">
        <h1 id="fajir"> {this.props.Fajir} </h1>
      </div>
    );
  }
}

export default CurrentTime;

更新资料
https://i.stack.imgur.com/YJx9T.png

当我登录时,什么都没有显示,这让我感到困惑,我尝试使用Postman Windows应用程序发出API请求,并且它可以100%正常运行,所以我不知道现在发生了什么

解决方法:

我认为您的提取代码看起来还不错,控制台中是否会抛出任何错误?可能是您的处理程序未绑定到正确的上下文.如果未正确绑定该函数,则this.setState会导致错误,因为这不是正确的上下文.您可能希望将其绑定到构造函数中,或者甚至更好的方法是,使用如下的初始化程序:

handleFormSubmit = (item) => {
  const url = `https://api.aladhan.com/timingsByCity?city=${item}&country=US&method=2`;

  fetch(url)
    .then((response) => {
     return response.json();
    })
    .then((json) => {
      this.setState({
        Fajir: json.Fajir,
        Sunrise: json.Sunrise,
        Dhuhr: json.Dhuhr
      });
    });
}

要做的一件事是检查浏览器的“网络开发人员”选项卡,并确保请求正确进行.

更新资料

看起来现在正在运行,请参见下面的提取代码:

const item = 'Chicago';
    var url = 'https://api.aladhan.com/timingsByCity?city=' + item + '&country=US&method=2';

fetch(url)
  .then((response) => {
    return response.json();
  })
  .then((json) => {
    console.log(json);
  });

标签:reactjs,web-deployment,css,html,javascript
来源: https://codeday.me/bug/20191025/1929063.html