使用 Axios 处理 Ajax
2019-08-19 本文已影响0人
SingleDiego
安装:
npm i axios@0.18
引入包:
import axios from 'axios';
我们用 jsonplaceholder 网站(https://jsonplaceholder.typicode.com/posts)作为简易的数据来源来演示下。
get 方法
import axios from 'axios';
componentDidMount() {
const promise = axios.get('https://jsonplaceholder.typicode.com/posts');
console.log(promise);
}
使用 asios.get()
方法请求服务器时会返回一个 ES6 Promise
对象,是一个装载了异步操作的对象。
该对象创建时候为 pending
状态,请求结束后变为 resolved
(请求成功) 或 rejected
(请求失败)状态。
我们把 promise
对象打印出来看看:
[[PromiseStatus]]
表示的 promise
的状态 "resolved"
。
[[PromiseValue]]
表示请求所获得的数据。
两个中括号表示的是内部属性,不能够使用点操作符来访问。
较为方便的方法是使用 Javascript 的异步方法来获取返回结果:
async componentDidMount() {
const promise = axios.get('https://jsonplaceholder.typicode.com/posts');
const response = await promise;
console.log(response);
}
优化一下代码:
async componentDidMount() {
const {data} = await axios.get('https://jsonplaceholder.typicode.com/posts');
this.setState({posts: data})
};
post 方法
apiEndPoint = 'https://jsonplaceholder.typicode.com/posts';
handleAdd = async () => {
const obj = {title: 'a', body: 'b'};
const {data: post} = await axios.post(apiEndPoint, obj);
console.log(post);
};
apiEndPoint
是请求的 URl,obj
是要通过 post 发送的数据对象。post
方法用于添加新对象。
需要注意的是 async
关键字在箭头函数中的位置。
put 方法
handleUpdate = async (post) => {
post.title = 'Updata';
await axios.put(apiEndPoint + '/' + post.id, post);
};
put
方法用于更新某个对象。
delete 方法
handleUpdate = async (post) => {
await axios.delete(apiEndPoint + '/' + post.id);
};