React、Axios、MockJs实现Ajax的请求拦截

  1. 工具安装
npm install axios   //axios请求包
npm install mockjs  //mockjs库

2.创建mock.js文件夹,代码如下

import Mock from 'mockjs';
const Random = Mock.Random;

// For example:获取轮播图
Mock.mock('/api/banners', 'get', {
  code: 200,
  msg: 'success',
  data: {
    'banners|1-10': [
      {
        image_url: Random.image('200x100', Random.color(), Random.color(), 'png', Random.title(5)),
        title: Random.ctitle(5),
      },
    ],
  },
});

3.在index.js文件中引入mock文件夹

import './utils/mock.js';

4.Axios简易封装

import axios from 'axios';

const instance = axios.create({
  timeout: 8000,
  withCredentials: false, // default
});

instance.interceptors.request.use(
  function (config) {
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);

instance.interceptors.response.use(
  function (response) {
    return response;
  },
  function (error) {
    return Promise.reject(error);
  }
);

export default instance;

  1. 在index.js文件里面引入,挂载到react对象上面,可以在任何实例上面获取到
import Http from './utils/request.js';

React.Http = Http;
  1. 在组件中使用Ajax请求,mock会自动拦截
export default class Comment extends Component {
    state={
        banners:[]
    };
	
	async componentDidMount(){
        //React.Http 是我把ajax请求绑定在了react上面,可以在任何实例上面获取到
        this.serverRequest = await React.Http.get('/api/banners')
        const {data}=this.serverRequest;
        if(data.code===200){
            this.setState({banners:data.banners})
        }
    }

	componentWillUnmout(){
        //由于ajax请求是异步的,官方提供的方法进行数据的获取;
      	this.serverRequest.abort()  
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值