React.js集成axios
网络数据传输一般推荐使用axios
yarn add axios
在react工程里,引入axios
import axios from 'axios';
先用antd创建一个Table表格,Table标签有两个属性,columns
是表头,dataSource
是数据
<Table columns={columns} dataSource={data}/>
columns
和data
我们在state
里面定义,state
简单来讲是react特有的一个存储数据的地方,state
写在constructor
里。
补充说明一点,constructor
是ES6中类的一个默认方法,一个类必定有一个constructor
方法,即使不显示定义,生成对象时也会被默认添加。
constructor(props) {
super(props);
//状态值
this.state = {
columns: [{ //定义姓名、性别两列
title: '姓名',
dataIndex: 'name',
}, {
title: '性别',
dataIndex: 'gender',
}],
data: [] //先空着
}
}
(1)读取网络数据
<?php
header("Access-Control-Allow-Origin: *");
echo '[{"key": "1", "name": "Joe.Ye", "gender": "男"}, {"key": "2", "name": "AppBlog.CN", "gender": "男"}]';
?>
<Button onClick={this.readData}>测试数据</Button>
readData() {
axios.get('http://www.yezhou.cc/api/data.php')
.then(res => {
console.log(res); //先输出到控制台看一下
})
.catch(error => {
console.log(error);
});
}
(2)读取数据显示到表格中
<Button type="primary" onClick={this.bindData.bind(this)}>读取表格数据</Button>
bindData() {
axios.get('http://www.yezhou.cc/api/data.php')
.then(res => {
this.setState({
data: res.data
})
})
.catch(error => {
console.log(error);
});
}
注意Button按钮绑定函数要加上
bind(this)
,因为在ES6中React是不会自动绑定this的,不加的话会报错'setState' undefined
完整代码
import React from 'react';
import { Button, Icon, Table, Row, Col } from 'antd';
import axios from 'axios';
class AxiosTest extends React.Component {
constructor(props) {
super(props);
//状态值
this.state = {
columns: [{ //定义姓名、性别两列
title: '姓名',
dataIndex: 'name',
}, {
title: '性别',
dataIndex: 'gender',
}],
data: [] //先空着
}
}
readData() {
axios.get('http://www.yezhou.cc/api/data.php')
.then(res => {
console.log(res); //先输出到控制台看一下
})
.catch(error => {
console.log(error);
});
}
bindData() {
axios.get('http://www.yezhou.cc/api/data.php')
.then(res => {
this.setState({
data: res.data
})
})
.catch(error => {
console.log(error);
});
}
render() {
var data = this.state.data;
var columns = this.state.columns;
return (
<div className="App">
<Row type="flex" justify="center">
<Button onClick={this.readData}>测试数据</Button>
<Button type="primary" onClick={this.bindData.bind(this)}>读取表格数据</Button>
</Row>
<div>
<Table columns={columns} dataSource={data}/>
</div>
</div>
);
}
}
export default AxiosTest;
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/12/react-js-integrate-axios/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论