在React.JS中处理API调用的输入更改

阿齐兹·加西莫夫(Aziz Gasimov)

我是React和JavaScript的新手,在这里我想根据相应的按钮获取国家/地区的结果(之后相应地更新API URL)。到目前为止,我设法使按钮起作用,但是肯定这不是正确的方法,因为在控制台中,我看到该组件被永远调用。所以我想知道处理这种情况的正确方法是什么

  constructor(props) {
    super(props);
    this.state = {
      res: "",
      confirmedCases: 0,
      targetCountry: "",
      deathNumber: 0,
      targetProvince: "",
      userInput: "Azerbaijan"
    };
  }

  componentDidUpdate(prevProps,prevState) {
    if (this.state.userInput !== prevState.userID) {

    fetch("https://covid-19-coronavirus-statistics.p.rapidapi.com/v1/stats?country="+this.state.userInput, {
      "method": "GET",
      "headers": {
        "x-rapidapi-key": "2f66132eeemsh16e2dd05b2ecd59p1ab765jsnc1f549cafc64",
        "x-rapidapi-host": "covid-19-coronavirus-statistics.p.rapidapi.com"
      }
    })
    .then(response => response.json()).then(data => {
      this.setState({
        res: data.data.lastChecked,
        confirmedCases: data.data.covid19Stats[0].confirmed,
        targetCountry: data.data.covid19Stats[0].country,
        deathNumber: data.data.covid19Stats[0].deaths,
        targetProvince: data.data.covid19Stats[0].province
      })
      console.log(data.data.covid19Stats[0].confirmed)
    })
    .catch(err => {
      console.error(err);
    });
  }
}

  handleChange = (target) =>{
    this.setState({
      userInput: target
    });
  }
  render(){
    return (
      <div className="App">
       <button onClick={(target) => this.handleChange("Azerbaijan", target)}>Azerbaijan</button>
       <button onClick={(target) => this.handleChange("Russia", target)}>Russia</button>
       <button onClick={(target) => this.handleChange("Turkey", target)}>Turkey</button>
      Last Updated:  {this.state.res}
        <br></br>
      Confirmed Cases:  {this.state.confirmedCases}
        <br></br>
      Country:  {this.state.targetCountry}
        <br></br>
      Number of Death:  {this.state.deathNumber}
        <br></br>
      Province:  {this.state.targetProvince}
      </div>
    );
  }
}
b3hr4d

只需删除componentDidUpdate并添加提取API即可handleChange运行。

使用componentDidMount用于获取默认的数据。

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      res: "",
      confirmedCases: 0,
      targetCountry: "",
      deathNumber: 0,
      targetProvince: "",
    };
  }
  componentDidMount() {
    this.handleFetch("Azerbaijan");
  }

  handleChange = (target) => {
    this.handleFetch(target);
  };

  handleFetch = (target) => {
    fetch(
      "https://covid-19-coronavirus-statistics.p.rapidapi.com/v1/stats?country=" +
        target,
      {
        method: "GET",
        headers: {
          "x-rapidapi-key":
            "2f66132eeemsh16e2dd05b2ecd59p1ab765jsnc1f549cafc64",
          "x-rapidapi-host": "covid-19-coronavirus-statistics.p.rapidapi.com",
        },
      }
    )
      .then((response) => response.json())
      .then((data) => {
        this.setState({
          res: data.data.lastChecked,
          confirmedCases: data.data.covid19Stats[0].confirmed,
          targetCountry: data.data.covid19Stats[0].country,
          deathNumber: data.data.covid19Stats[0].deaths,
          targetProvince: data.data.covid19Stats[0].province,
        });
      })
      .catch((err) => {
        console.error(err);
      });
  };
  render() {
    return (
      <div className="App">
        <button onClick={() => this.handleChange("Azerbaijan")}>
          Azerbaijan
        </button>
        <button onClick={() => this.handleChange("Russia")}>
          Russia
        </button>
        <button onClick={() => this.handleChange("Turkey")}>
          Turkey
        </button>
        <hr/>
        Last Updated: {this.state.res}
        <br/>
        Confirmed Cases: {this.state.confirmedCases}
        <br/>
        Country: {this.state.targetCountry}
        <br/>
        Number of Death: {this.state.deathNumber}
        <br/>
        Province: {this.state.targetProvince}
      </div>
    );
  }
}
ReactDOM.render(<App />, document.getElementById("react"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

按钮未根据API调用更改React JS中的状态

来自分类Dev

在React JS中如何处理输入选择的更改值?

来自分类Dev

如何使用React.js Flux架构和McFly中的动作处理API调用?

来自分类Dev

React JS中的安全API调用

来自分类Dev

在React.js中处理多个输入值

来自分类Dev

在状态更改后通过react js中的getDerivedStateFromProps调用方法

来自分类Dev

为什么在表单输入更改事件中反复调用ReactClass中的react函数

来自分类Dev

为什么在表单输入更改事件中反复调用ReactClass中的react函数

来自分类常见问题

React.js:如何从表单提交中更新API调用

来自分类Dev

解决React JS中的API调用问题(400错误)

来自分类Dev

React JS小提琴中的API调用

来自分类Dev

在React中处理受控表单组件更改

来自分类Dev

React:如何在事件处理程序中调用react钩子?

来自分类Dev

如何将一个事件处理程序附加到 React JS 中的不同输入?

来自分类Dev

我在React-native和Redux中处理API调用的地方

来自分类Dev

为什么我不应该使用catch()处理React useEffect API调用中的错误?

来自分类Dev

我在React-native和Redux中处理API调用的地方

来自分类Dev

如何使用React JS调用API

来自分类Dev

调用 api 响应进入 react js

来自分类Dev

模拟更改事件以使用香草JS脚本将文本输入到React Textarea中

来自分类Dev

在React中处理API KEY的方式?

来自分类Dev

如何在React.js中其他组件的值更改时调用Textbox的验证?

来自分类Dev

处理Radio在React JS中的变化?

来自分类Dev

处理React js中的验证场景

来自分类Dev

React JS从输入数量中获取价值

来自分类Dev

对React JS中的输入进行验证

来自分类Dev

在React JS中验证用户输入

来自分类Dev

在React.js表单中要求输入

来自分类Dev

使用API调用,用户输入等构建React组件

Related 相关文章

  1. 1

    按钮未根据API调用更改React JS中的状态

  2. 2

    在React JS中如何处理输入选择的更改值?

  3. 3

    如何使用React.js Flux架构和McFly中的动作处理API调用?

  4. 4

    React JS中的安全API调用

  5. 5

    在React.js中处理多个输入值

  6. 6

    在状态更改后通过react js中的getDerivedStateFromProps调用方法

  7. 7

    为什么在表单输入更改事件中反复调用ReactClass中的react函数

  8. 8

    为什么在表单输入更改事件中反复调用ReactClass中的react函数

  9. 9

    React.js:如何从表单提交中更新API调用

  10. 10

    解决React JS中的API调用问题(400错误)

  11. 11

    React JS小提琴中的API调用

  12. 12

    在React中处理受控表单组件更改

  13. 13

    React:如何在事件处理程序中调用react钩子?

  14. 14

    如何将一个事件处理程序附加到 React JS 中的不同输入?

  15. 15

    我在React-native和Redux中处理API调用的地方

  16. 16

    为什么我不应该使用catch()处理React useEffect API调用中的错误?

  17. 17

    我在React-native和Redux中处理API调用的地方

  18. 18

    如何使用React JS调用API

  19. 19

    调用 api 响应进入 react js

  20. 20

    模拟更改事件以使用香草JS脚本将文本输入到React Textarea中

  21. 21

    在React中处理API KEY的方式?

  22. 22

    如何在React.js中其他组件的值更改时调用Textbox的验证?

  23. 23

    处理Radio在React JS中的变化?

  24. 24

    处理React js中的验证场景

  25. 25

    React JS从输入数量中获取价值

  26. 26

    对React JS中的输入进行验证

  27. 27

    在React JS中验证用户输入

  28. 28

    在React.js表单中要求输入

  29. 29

    使用API调用,用户输入等构建React组件

热门标签

归档