React中怎么实现后台调用(异步+同步)

React如何调用后台

使用惯了jQuery封装好的ajax方法,这次在使用React项目开发时,着实令人着急,记录一下。

fetch

fetch是用来取代传统的XMLHttpRequest的。 它的优点很多,包括链式调用的语法、返回promise等。

下面就是最基本的fetch使用,默认是异步的。

fetch(url,{
	method: 'POST',
	headers: {
	    'Content-Type': 'application/json',
	},
	body: data,					// data为传输对象
}).then(res => {
    res.json().then(data => {	// data为返回的对象
		console.log(data);
	});
}).catch(function(e) {
  	console.log("ERROR");
});

简洁版:

let option = {};		// 参数
options.method = 'post';
let data={};
options.body = JSON.stringify(data);
options.headers={
    'Content-Type':'application/json'
};

fetch(url,option).then(res => res.json())
  .then(data => console.log(data))
  .catch(e => console.log("error", e))

如何同步调用

使用 async 和 await 关键词,不过听说对浏览器兼容性不好。

// 在方法前加上async关键词
async function fetchAsync () {
  let response = await fetch(url);
  let data = await response.json();
  return data;
}

真实案例

getData=(id)=>{
	let option = {};		// 参数
	options.method = 'post';
	let data={id:id};
	options.body = JSON.stringify(data);
	options.headers={
	    'Content-Type':'application/json'
	};
	fetch(baseUrl+"/xx/xxxx",option)
		.then(res=> res.json())
		.then(res=> {
			if(res.status===200){
				// 获取返回值,修改state
				this.setState({
					data:res.data.list
				});
			}
		})
		.catch(e => console.log("error", e));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值