React axios.get not working 它说编译失败

Posted

技术标签:

【中文标题】React axios.get not working 它说编译失败【英文标题】:React axios.get not working it's says failed to compile 【发布时间】:2019-08-06 22:17:08 【问题描述】:

我是 React 的新手。我正在尝试使用 axios 获取我的 api 数据。但得到错误。我的代码是:

import React from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
import ApiContent from './ApiContent';

class App extends React.Component
    axios.get('http://example.com/api/api/topCardNews')
      .then(function (response) 
        // handle success
        console.log(response);
      )
      .catch(function (error) 
        // handle error
        console.log(error);
      )
      .then(function () 
        // always executed
      );

    render() 
        return(
            <div className="asdfs">
                <ApiContent />
            </div>
        );
    


ReactDOM.render(<App />,document.getElementById('root'));

并获取错误列表:

编译失败

./src/index.js 语法错误:意外的令牌 (7:7)

6 |类 App 扩展 React.Component

7 | axios.get('http://example.com/api/api/topCardNews')

8 | .then(函数(响应)

9 | // 处理成功

10 |控制台日志(响应);

This error occurred during the build time and cannot be dismissed.

【问题讨论】:

您正试图在类声明中调用函数。将您的函数调用放在类构造函数或类实例方法中。 @DanO 我很抱歉让我用构造函数试试这个 【参考方案1】:

将调用函数放在构造函数或componentDidMount函数中

class App extends React.Component
    constructor(props) 
     super(props);
     axios.get('http://example.com/api/api/topCardNews') //...
    

    componentDidMount()
      //or here or to other lifecycle function based on needs
    


    render() 
        return(
            <div className="asdfs">
                <ApiContent />
            </div>
        );
    

【讨论】:

【参考方案2】:

您应该在生命周期事件(如 ComponentWillMount)或构造函数中调用 axios.get(.....)。

类组件可以具有声明或函数定义以及渲染。它不能直接调用函数。

【讨论】:

【参考方案3】:

问题是我必须在任何javascript eventconstructor() 中使用这个api 代码。

import React from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
import ApiContent from './ApiContent';

class App extends React.Component
    constructor(props)
        super(props);
        axios.get('http://example.com/api/topCardNews')
          .then(function (response) 
            // handle success
            console.log(response);
          )
          .catch(function (error) 
            // handle error
            console.log(error);
          )
          .then(function () 
            // always executed
          );
    

    render() 
        return(
            <div className="asdfs">
                <ApiContent />
            </div>
        );
    


ReactDOM.render(<App />,document.getElementById('root'));

【讨论】:

以上是关于React axios.get not working 它说编译失败的主要内容,如果未能解决你的问题,请参考以下文章

包含 axios GET 调用的 React-Redux 应用程序测试操作创建者

Axios get request 在 React 中第一次返回 undefined

在 React-Native 应用程序中使用带有授权标头的 Axios GET

MacOs 和 iOs 上 Safari 的 React 和 Axios GET 请求问题

REACT 如何使用 Redux 和 Axios(使用 promise 中间件)发出 AJAX 请求?

React - 多个 Axios 请求