当前位置: 首页 > news >正文

做公务员题目的网站/河北网站优化公司

做公务员题目的网站,河北网站优化公司,wordpress后台上不去,互联网保险优势利用Dva调用接口 ​ 在前端的开发中,总是会涉及到调用接口这个问题。我作为一名前端的小白,谈一下自己对于调用接口的理解。 ​ 这是Dva的官网https://dvajs.com/guide/。 ​ dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为…

利用Dva调用接口

​ 在前端的开发中,总是会涉及到调用接口这个问题。我作为一名前端的小白,谈一下自己对于调用接口的理解。

​ 这是Dva的官网https://dvajs.com/guide/。

​ dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。

​ 在实际开发中会遇到这样的情况,比如某个接口需要在多个不同的页面被多次调用,总是一遍遍的的调用接口的API会很麻烦,这时候就可以单独把这一块拎出来写。dva 通过 model 的概念把一个领域的模型管理起来,包含同步更新 state 的 reducers,处理异步逻辑的 effects,订阅数据源的 subscriptions 。

​ 官方提供的一些核心概念如下:

  • ​ State:一个对象,保存整个应用状态

  • ​ View:React 组件构成的视图层

  • ​ Action:一个对象,描述事件

  • ​ connect 方法:一个函数,绑定 State 到 View

  • ​ dispatch 方法:一个函数,发送 Action 到 State

    我在代码开发中实际是这样做的。首先在services文件夹里面写调用接口的函数。

    export async function GetShortnoteTemplate() {return Authorizationaxios({//  {API_PREFIX}里面存放的是地址,根据编译环境的需要可以随时更换地址url:`${API_PREFIX}/api/v1/returnOrderConfig/note/search`,method:'GET',});
    }
    

    然后在models文件夹里面对数据进行些处理。

    //把我们定义的services引入进来
    import {GetShortnoteTemplate , AddShortnoteTemplate , DeleteShortnoteTemplate} from '@/services/shortnoteTemplate';const shortnote = {//命名空间,也是全局上的属性,于解决多个models之间的互相干扰的问题,我们存储所有数据都会在这个空间下。//namespace: 'global' 说明以下此处的dva命名空间为 global,即你调用的时候需要采用 global.XXX 的形式   namespace:'shortnoteTemplate',// 初始值state:{// 初始值为空的shortnote_data:[],},/*用于处理异步操作,不能直接修改state 由action触发 也可触发action  只能是generator 函数有两个参数 action ,effects 两个参数。第二个参数effect包括三个参数 (call,put,select)put 用于触发action ,call用于调用异步处理逻辑,select用于从state获取数据 */effects:{// 这个*代表的是它是一个异步函数,里面可以使用 yield 等待其他异步函数执行结果。*GetShortnoteTemplateEffects({payload},{call,put}){/*通过yield call()来调用数据接口方法和请求参数,yield表示同步调用,这个是generator提供的功能call:与后台服务端接口进行交互。第一个传参:后台服务器接口对应的名称。第二个参数:入参。*/let res = yield call(GetShortnoteTemplate,payload.data);/*put用于触发actionsaction是一个单纯的包含{type,payload}的对象,type 是一个常量用来标示动作类型,payload 是这个动作携带的数据。action需要通过dispatch()方式来发送*/yield put({type:'shortnoteReducer',payload:res,});},*AddShortnoteTemplateEffects({payload},{call,put}){let res = yield call(AddShortnoteTemplate,payload.data);// console.log('AddShortnoteTemplate',res)yield put ({type:'shortnoteReducer',payload:res,})}},//reducers,类似于redux中的reducer,是一个纯函数用来处理同步函数,是唯一一个可以修改 state的地方,由action触发//它有action和state两个参数//一个reducer会接受两个参数分别是oldstate和action,返回一个新的statereducers:{/*GetShortnoteTemplateEffects可以理解为一个方法名 payload:就是 action 里传递过来的数据。num 是传过来的,名字随便起,不是state中的num,这接收一个action*/shortnoteReducer(state,{payload}){//  当返回的状态为200时候,说明是调用成功的,可以继续执行。if(payload.status === 200){// return返回的是新的state,等于舍弃了旧的 state,重新 return 一个新的 state 作为当前 Model 的 state。return{// 一般情况下,我们要解开旧的 state,将它重新赋值给新的 state。...state 为 ES6 语法。...state,shortnote_data:payload.data.data,};}},}}
    export default shortnote;
    

    上述处理完成后我们就可以在其他页面调用了。当然这个useEffect是写在函数里面的。

    import { connect } from 'dva';//比如说每次数据初始化的时候,可以这样写useEffect(() => {props.dispatch({//namespace+需要调用的reducer方法type: 'shortnoteTemplate/GetShortnoteTemplateEffects',payload: {data: '',},});}, []);
    

    在函数导出的时候还是需要做些额外的处理

    /*connect的作用是将组件component和models结合在一起。将models中的state绑定到组件的props中,并提供一些额外的功能。譬如dispatch方法,dispatching function 是一个用于触发 action 的函数,action 是改变 State 的唯一途径,但是它只描述了一个行为,而 dipatch 可以看作是触发这个行为的方式
    */
    export default connect(({ shortnoteTemplate, loading }) => ({loading: loading.effects['shortnoteTemplate/GetShortnoteTemplateEffects'],shortnote_data: shortnoteTemplate.shortnote_data,
    }))(shortnoteTemplateConfig);
    
http://www.jmfq.cn/news/5180401.html

相关文章:

  • 做国际物流需要自己的网站吗/优书网首页
  • 北京网站百度推广/长春刚刚最新消息今天
  • dedecms微电影网站模板/搜狗引擎
  • 淄博网站制作服务/域名关键词排名查询
  • 阳春网站建设/广州seo全网营销
  • 南京网站制作哪家好/网店推广方法有哪些
  • 百度给企业做网站吗/广州抖音推广公司
  • 网站建设找盖亚科技/在线识别图片来源
  • 做网站的收益在哪/王通seo教程
  • 武汉做网站哪里好/优化疫情防控措施
  • 杭州企业网站建设/知乎关键词排名
  • 平度网站建设ld4/推介网
  • 阿里妈妈 该网站的域名已经被其他人绑定/seo网站推广经理
  • 面试建设单位在哪个网站/网络推广工作内容
  • 万网服务器网站建设/网站友链查询源码
  • 阜阳网站建设价格/竞价排名点击器
  • 苏州市建设安全监督局网站/排名优化方案
  • 襄州区城乡建设局网站/江门seo
  • 芸志建站怎么建立网站/网络公关公司收费
  • 设计网站会员/海外营销
  • 餐饮企业网站建设方案书/sem竞价推广怎么做
  • 网站使用说明书/免费的行情网站app
  • 网站建设标书模板下载/ks免费刷粉网站推广
  • 深圳做棋牌网站建设找哪家公司好/百度推广免费
  • 企业网站推广案例/一个产品的市场营销策划方案
  • 做3d任务的网站/成都网站seo外包
  • 怎么让网站排名上去/电商产品推广方案
  • 做英文网站价格/百度竞价渠道代理商
  • 无锡网站建设 首选众诺/百度极速版app下载安装挣钱
  • 网站建设哪里比较好/免费网页制作网站