React应用中的异步数据请求

React官方没有指定任何特定的异步请求技术,但是官方给的示例程序都是使用:fetch

  1fetch的基础使用

//使用fetch发起GET请求

let  url  =  '....'

fetch(url)

.then(response=>{

    response.json( )    //解析JSON响应

    .then(data=>clg(data))

    .catch(err=>clg(err))

})

.catch(err=>clg(err))

//使用fetch发起POST请求

let  url  =  '....'

let  options = {

   method: 'POST',

   headers: {'Content-Type':'application/x-www-form-urlencoded'},

   body: 'k1=v1&k2=v2'  //不能是对象

}

fetch(url, options)

.then(response=>{

    response.json( )    //解析JSON响应

    .then(data=>clg(data))

    .catch(err=>clg(err))

})

.catch(err=>clg(err))

  2、对fetch进行二次封装

目标1:对所有的请求地址(协议+主机名+端口)统一管理,整个项目中只出现一次

  目标2:对底层AJAX具体实现技术进行封装屏蔽

  目标3:对横切关注点(前置-权限校验/后置-操作日志/环绕-耗时统计)进行统一管理

1、fetch的二次封装

  @/service/index.js

export  let  base = 'http://www.codeboy.com:9999/mfresh/'

let bodyOptions = {method:'POST', headers:{'Content-Type':'....'}}

export let newsSelect = async function(){

let url = base + 'data/news_select.php'

let options = {...bodyOptions,  body: 'k1=v1&k2=v2&...'}

//showLoading()

let res = await + fetch(url, options)

let data = await  res.json()

//hideLoading()

return data

}

  

 @/pages/Home.js

useEffect( ()=>{

(async ()=>{

let data = await newsSelect()

})()

},[ ] )

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值