axios获取数据

上一篇文章,讲解了如何新增和删除todo,这一篇我们用axios获取后台数据,渲染列表

后台接口 我们用koa搭建一个后台接口 接口地址http://localhost:3333/api/list

实际做起来遇到了跨域问题,当然可以用proxy代理,不过这里我们直接修改谷歌浏览器参数,开启跨域就好了
ky.png

修改谷歌浏览器
在快捷方式-目标 后面添加如下命令

 --disable-web-security

image.png

我们再koa定义接口

let list={
	"code":"200",
	"message":"success",
	"data":['好好学习react2','每天听歌跑跑步2','和儿子康康乐乐一起玩耍2']
}
router.get('/list',async (ctx)=>{
    ctx.body=list;
});

在todo.js
//组件初始化完毕调用接口,获取数据

cnpm  install axios --save
import  axios from 'axios';

componentDidMount(){
		let  api = "http://localhost:3333/api/list";
		axios.get(api).then((res)=>{
			console.log(res.data.data);
			let  list =res.data.data;
			const  action  = getDataAction(list);
			store.dispatch(action);
		}).catch(err=>{
			console.log(err)
		});
	};

定义一个类型
actionTypes.js

export const GETDATA = 'getData';

定义一个action
actionCreaters.js

import {CHANGEINPUT,ADDITEM,DELETEITEM,GETDATA} from './actionTypes.js';
//从后台获取数据
export const getDataAction = (data)=>({
	type:GETDATA,
	data
});

ps:这里就是从接口获取数据,放入getDataAction中去,把数据返回出去后,再dispatch分发,然后具体业务再reducer中实现
reducer.js

import {CHANGEINPUT,ADDITEM,DELETEITEM,GETDATA} from './actionTypes';
	//从后台获取数据 
	if(action.type===GETDATA){
		let  newState = JSON.parse(JSON.stringify(state));
		newState.list=action.data;
		return newState;
	};

好了,基本大功告成~

现在我们讲解第二种跨域的方法,感觉这个比较使用,话不多说上代码
2:http-proxy-middleware

//安装插件
cnpm  install http-proxy-middleware

然后再src下面新建一个setupProxy.js

// setupProxy.js
const proxy = require('http-proxy-middleware')

module.exports = function(app) {
  app.use(
    proxy('/api', {  //`api`是需要转发的请求 
      target: 'http://localhost:3333',  // 这里是接口服务器地址
      changeOrigin: true,
    })
  )
}

ps:看到没,我们这里跨域访问是
image.png
效果是一样一样的
image.png

OK,大功告成,跨域成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值