Axios在react js中获取请求时出错

Posted

技术标签:

【中文标题】Axios在react js中获取请求时出错【英文标题】:Axios giving error on get request in react js 【发布时间】:2020-04-27 18:58:25 【问题描述】:

我一直在尝试使用 axios get request 从 api 获取数据,但它一直给我错误。错误是 TypeError: this.setstate is not a function 我见过多个关于它的查询,几乎所有人都这样做了,但我不知道我做错了什么。

我的 axios 代码获取

import React,  Component, Fragment  from 'react';
import axios from 'axios'

class Questionare extends Component 
    constructor(props) 
        super(props);
        this.state =   
          items: [],

    
 

componentDidMount() 
  axios.get('http://leaty-dev.azurewebsites.net/api/services/app/PersonalityQuestionerCategory/GetAllPersonalityQuestionerCategory')
  .then(response => 
      console.log(response);
      this.setstate(items: response.data)
  )
  .catch(error => 
    console.log(error);
  );


    render()  

       return (
          <ul>
            this.state.items.map(item=>(
             <li>item.pqcDetail</li>
            ))
          </ul>
       )
    



export default Questionare;

【问题讨论】:

我建议通过response.json()将响应转换为json 我的错误已得到纠正,这是驼峰式错误,但我还有另一个错误 TypeError: this.state.items.map is not a function 【参考方案1】:

这是骆驼案setState() 不是setstate()

修正

this.setState(items: response.data)

改进的完整代码---直播https://74u3w.csb.app/

import React,  Component  from "react";
import ReactDOM from "react-dom";
import axios from "axios";

class Questionare extends Component 
  state = 
      items: []
    ;
  componentDidMount() 
    axios
      .get(
        "https://cors-anywhere.herokuapp.com/http://leaty-dev.azurewebsites.net/api/services/app/PersonalityQuestionerCategory/GetAllPersonalityQuestionerCategory"
      )
      .then(response => 
        this.setState( items: response.data.result.items );
      )
      .catch(error => 
        console.log(error);
      );
  

  render() 
    const  items  = this.state;
    return (
      <ul>
        items.map(item => (
          <li>item.pqcDetail</li>
        ))
      </ul>
    );
  

【讨论】:

非常感谢它成功了,但我还有另一个问题 TypeError: this.state.items.map 不是函数 @AbdulRauf 你能展示你的 json 响应数据样本吗?是数组还是对象 它是一个包含 7 个项目的数组 非常感谢您的帮助。 @VahidAkhtar

以上是关于Axios在react js中获取请求时出错的主要内容,如果未能解决你的问题,请参考以下文章

React - Axios 获取请求将数据返回为 NULL

React之配置多个代理实现数据请求返回

使用 Axios 从 React 获取请求中的 Spring Pageable 对象

Axios 承诺处理 - 在 react-native 中获取“可能的未处理承诺拒绝 - 类型错误:网络请求失败”

Axios 没有使用 useEffect() (React Js) [重复]

React - 多个 Axios 请求