接口:mock 模拟数据以及接口调用遇到的 axios的坑

项目用的 react+dva,由于后端接口还没有好,所以需要用mock创数据,拦载 ajax ,返回 mock 里面的数据。
那么问题来了,怎么用  mock 呢?看了官方文档,我表示没有看明白。
问团儿,这个问题,团儿解答:在你现在的里面写"get/api":[],get要大写,/api就是你的接口地址,上面要引用mock,import  mock from ‘mockjs’。
下面还记录了我在 mock 数据,接口中遇到的问题。
 
 
如何使用 mock.js ?
    第一步:安装 
        npm install mockjs --save-dev 
        或者
        <script> 标签引入
    第二步:建一个mock文件,里面建一个 mock.js 文件
    第三步:配置文件        
                // 使用 Mock
                import Mock from 'mockjs' ;
 
                // 配置拦截 ajax 的请求时的行为,支持的配置项目有 timeout。
                Mock . setup ({
                    timeout: '200 - 400'
                })
 
                // Mock响应模板
                Mock . mock ( '/data' ,{
                        'list|1-10' : [{
                                    'id|+1' : 1 , // 序号 属性值自动加 1,初始值为 1
                                    'businesscode' : /\d {1,10} / , // 商户ID
                                    'proversion|1' : [ '标准版' , '企业版' , '试用版' ], // 产品版本 随机选取 1 个元素
                                    'storecode' : /\d {1,10} / , // 门店编码
                                    'storename' : '@cname' , // 门店名称
                                    'status|1' : [ '试用' , '使用' , '续用' ], //状态 随机选取 1 个元素
                                    'effectdate' : '@date("yyyy-MM-dd")' , // 有效日期
                        }]
                })

代码截图如下: 

如何使用 mock.js 的 API
我们使用 mock 的原因,就是因为后端接口没有提供,我们需要拦截,用mock 来创数据,调用显示。那么就涉及到 mock 的语法问题。请看API 

Mock 的地址要跟接口的地址一样,然后实际传的时候是用的mock数据,等后端接口好了之后,再把原先接口放出来 

 

React 怎么获取接口?四种方式
第一种:用 ajax 方法获取

 

第二种:用 $.ajax() 方法获取

 

第三种:用 fetch() 方法获取数据

第四种:用 ajax 方法获取

React 如何用 axios 做接口?

        我用的 axios 来调接口,用jq的 $.ajax({}) 报错,显示 promise 语法不对。我也没研究,先弄出来一个再说。
 
        axios 的配置:
               npm install axios --save-dev 
               在 index.js 页面中引入 import axios from ‘axios’
 
        然后开始用 react 的生命周期里面的函数进行接口调用。代码如下: 

 

然后我在控制台看到了有data数据,但是页面上并没有渲染。在这里要说明一下,项目原来用的是fetch,然后我用了 axios 。fetch 是自己赋值数据的。但是 axios 是不行的,需要手动赋值。那么问题来了?怎么赋值呢?在哪里赋值呢?

 

然后得出的结果就是列表显示出来了。

其实这当中还有一个问题,我在这个const里面本来是list:dataSource 这样定义的,但是列表渲染不出来,所以才用的this.state.dataSource 这个方法。

这 react 的工具里面,我看到了props 里面的list 是空的,但是 state 里面已经存了数据。然后我问了鱼叔知道了为啥。就是刚才的this.state.dataSource 的问题。

在 ant Design 中 table 组件里,可以默认显示一条数据的,然后两个如果都写的话会报错,这里扯到解构函数的问题。

 

那么什么叫解构呢?
var obj = {list:1} 等同于 var {list} = {list:1} 打印出来的值为 1。
 
var obj = {list:1}
var c = obj.list
console.log(c)
你用的还是const,由于const不能声明两次,就报错。 

 

 

 

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值