使用create-react-app进行中后台开发(四、Axios发送请求,跨域解决)

前端通过Axios发送http请求,获取后台数据进行展示。

官方文档地址:http://www.axios-js.com/zh-cn/docs/react-axios.html

1、引入依赖:

npm install react-axios

2、使用:

新建accountList.js文件,内容如下

import axios from 'axios';

function AccountList() {
    const getNum = 0;
    axios.get("http://localhost:8080/hello",{
        headers:{
            "Access-Control-Allow-Origin":true
        }
    })
    .then(function(response){
        console.log("请求响应结果为:"+ response);
        this.getnum = response.data;
    })
    return (
        
        <div>获取的数量为:{getNum}</div>
    )
    
}
export default AccountList;

3、这里会因为前后端使用了不同的端口(后端使用Springboot启动),会存在跨域问题。

 简单的解决办法为后端设置允许跨域 即可。

4、异步结果的使用

前面的内容都是通过function来定义一个组件,这种组件属于无状态组件。

 为了能够记录组件状态,根据异步请求的返回数据来展示内容,我们需要通过定义类来记录组件的状态流转。

 

5、React的三种组件实现方式及区别:

参考:https://www.cnblogs.com/wonyun/p/5930333.html

通过React.Component创建带有状态的组件

import React from 'react';
import axios from 'axios';

class AccountList extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            num:404
        };
    }
    componentDidMount() {
        const me = this;
        axios.get("http://localhost:8080/hello").then(
            function(response){
                console.log(response.data);
                me.setState({
                    num:response.data
                });
            }
        ).catch(function(error){
            console.log(error);
        })
    }
    render(){
        return (
            <div>获取的数量为:{this.state.num}</div>
        );
    }
}
export default AccountList;

 

posted @ 2021-12-28 19:33  sliec  阅读(365)  评论(0编辑  收藏  举报