千家信息网

在react中如何使用mockjs方法

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容主要讲解"在react中如何使用mockjs方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"在react中如何使用mockjs方法"吧!介绍mo
千家信息网最后更新 2025年02月23日在react中如何使用mockjs方法

本篇内容主要讲解"在react中如何使用mockjs方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"在react中如何使用mockjs方法"吧!

    介绍

    mock意为"模仿"或"模拟",简单来说,就是造数据,造你想要的几乎任何数据,包括api和通过api返回的数据。

    在写完项目进行自测,或者写页面需要数据 但是又不想单独开个后端,这时候就可以用mockjs来实现返回随机数据。

    安装 & 卸载 & 引入

    // 安装npm i mockjs// 卸载npm uninstall mockjs// 项目中引入import Mock from 'mockjs'

    基础语法 & 规范

    Mock.mock

    造数据,需要使用到mock方法:

    Mock.mock(xxx)// 这里面的xxx就是要通过mock来模拟的数据

    每个被伪造的数据,都包含3部分:

    • 属性名 name

    • 生成规则 rule

    • 属性值 value

    比如:

    const data = Mock.mock({    code: '0',    msg: 'success',    'list|5': [{ name: '@name', age: '@integer(18, 25)'}]})

    这里的code , msg , list 都是属性名,其中list和msg都是字符串,list是数组

    code和msg的数据过于简单,所以生成规则在这里省略了,

    而list对应的生成规则是|5,意思是生成一个数组,里面包含5个元素

    这里的'0' , 'success'[{ name: '@name', age: '@integer(18, 25)'}]就是他们各自对应的值。

    打印一下生成的结果看看:

    console.log(data)/*********结果如下*************/{    "code": "0",    "msg": "success",    "list": [        {            "name": "Nancy Lewis",            "age": 18        },        {            "name": "Gary Wilson",            "age": 25        },        {            "name": "Shirley Gonzalez",            "age": 22        },        {            "name": "Mark Moore",            "age": 24        },        {            "name": "Richard Gonzalez",            "age": 22        }    ]}// 另外,多次打印可以看出,每次结果都是不一样的,数据是随机的。

    从上面的例子可以得知,生成规则是可选的,非必须的

    如果存在生成规则,那么属性名和生成规则之间需要用|隔开

    7种生成规则

    'name|min-max': value

    // 表示value值重复的次数,最少min次,最多max次const data = Mock.mock({    'list|1-5': ['hello-']})// 得到的结果可能是:[    "hello-",    "hello-",    "hello-",    "hello-",    "hello-"]// 也可能是:[    "hello-",    "hello-",    "hello-"]// hello-随机重复1-5次作为结果

    'name|count': value

    // value固定重复count次const data = Mock.mock({    'list|2': ['hello-']})// 得到的结果是:[    "hello-",    "hello-"]

    'name|min-max.dmin-dmax': value

    // 当value 是数字型时,生成一个浮点数,// 浮点数的整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。// 生成的值和初始写的value值的大小无关,value的初始值只是用来确定数据类型const data = Mock.mock({    'num1|1-100.1-3': 1})

    生成的结果可能是:

    也可能是:

    'name|min-max.dcount': value

    // 当value 是数字型时,生成一个浮点数,// 浮点数的整数部分大于等于 min、小于等于 max,小数部分保留dcount位。// 生成的值和初始写的value值的大小无关,value的初始值只是用来确定数据类型

    'name|count.dmin-dmax': value

    // 当value 是数字型时,生成一个浮点数,// 浮点数的整数部分等于count,小数部分保留 dmin 到 dmax 位。// 生成的值和初始写的value值的大小无关,value的初始值只是用来确定数据类型

    'name|count.dcount': value

    // 当value 是数字型时,生成一个浮点数,// 浮点数的整数部分是count,小数部分保留dcount位。// 生成的值和初始写的value值的大小无关,value的初始值只是用来确定数据类型

    'name|+step': value

    // 当value为数字时,初始值为value,每次得到的结果会自增1

    生成规则和属性值value的关系

    属性值是布尔值

    'name|1': value// 当value是true或者false时// 最终结果会返回一个布尔值,返回true的概率是1/2,返回false的概率也是1/2'name|min-max': value// 当value是一个表示布尔值的结果时,// 会随机生成一个布尔值,值为 value 的概率是 min / (min + max),// 值为 !value 的概率是 max / (min + max)

    属性值是对象 Object

    'name|count': object// 从属性值 object 中随机选取 count 个属性'name|min-max': object// 从属性值 object 中随机选取 min 到 max 个属性

    属性值是数组 Array

    'name|1': array// 从属性值 array 中随机选取 1 个元素,作为最终值。'name|+1': array// 从属性值 array 中顺序选取 1 个元素,作为最终值。'name|min-max': array// 通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。// 'name|count': array通过重复属性值 array 生成一个新数组,重复次数为 count。

    属性值是正则表达式 RegExp

    // 根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串Mock.mock({    'regexp1': /[a-z][A-Z][0-9]/,    'regexp2': /\w\W\s\S\d\D/,    'regexp3': /\d{5,10}/})// 结果可能是:{    "regexp1": "pJ7",    "regexp2": "F)\fp1G",    "regexp3": "561659409"}

    占位符@

    占位符 引用的是 Mock.Random 中的方法,

    这跟vue中的v-on:click省略成@click很像。可以简单理解为Mock.Random的缩写。

    @后面跟上Mock.Random的一些固定方法,用来生成随机数据。

    用法示例:

    // 比如我们现在要随机生成一个中文人名const data = Mock.Random.cname()// 结果:// data: 赵丽

    改成占位符的方法就是:

    const data = Mock.mock('@cname')// 结果:// data:  张秀兰

    这里的cname就是Mock.Random的一个方法,表示获取随机的中文人名。

    这里有一张表格,包含了Mock.Random的方法,并进行了简单的分类:

    方法名前面带c的,都是用来获取中文相关的数据的。比如@name用来生成随机的英文名,而@cname就是用来生成随机的中文名。

    另外,这些方法还可以带参数,以下有一些例子:

    import Mock from 'mockjs'let basicData = Mock.mock({    'list|1-100': [{        'id|+1': 1,        'isBoolean': '@boolean(10, 0, true)',//百分之百的true        'naturalNumber': '@natural(1, 1000)', //大于等于零的整数        'integer': '@integer(0)', //随机整数        'float': '@float(1, 100, 3, 6)', //随机浮点数,         'character': '@character("upper")', //一个随机字符        'string': '@string("lower", 5, 20)', //一串随机字符串        'range': '@range(1, 10, 2)', //一个整形数组,步长为2    }]});// console.log(basicData);let Date = Mock.mock({    'dateList|10': [{        'date': '@date',        'date-yyyy-MM-dd': '@date(yyyy-MM-dd)',        'date-yy-MM-dd': '@date(yy-MM-dd)',        'date-y-MM-dd': '@date(y-MM-dd)',        'date-y-M-d': '@date(y-M-d)',        'line-through': '------------------------------------------------',        'timessss': '@time', //随机的时间字符串,        'time-format': '@time()', //指示生成的时间字符串的格式, default: 'HH: mm: ss',        'time-format-1': '@time("A HH:mm:ss")',        'time-format-2': '@time("a HH:mm:ss")',        'time-format-3': '@time("HH:mm:ss")',        'time-format-4': '@time("H:m:s")',        'datetime': '@datetime("yyyy-MM-dd A HH:mm:ss")', //返回一个随机的日期和时间字符串        'dateNow': '@now("second")' //获取当前完整时间    }]});// console.log(Date);let imageList = Mock.mock({    'imageList|5': [{        'id|+1': 1,        'img': '@image',//生成一个随机的图片地址,        'img-1': '@image("200x100", "#000", "#fff", "png", "Mock.js")', //生成一个200*100, 背景色#000,前景色#fff, 格式png, 文字mock.js的图片    }]})// console.log(imageList);let paragraph = Mock.mock({    'paragraphList|5': [{        'id|+1': 1,        'paragraph2': '@cparagraph(2)', //生成一段2句话的中文文本,        'paragraph3': '@paragraph(3)', //生成一个3句话的英文文本        'title': '@title', //随机生成一个英文标题        'ctitle': '@ctitle', //随机生成一个中文标题    }]})// console.log(paragraph);let name = Mock.mock({    'nameList|5': [{        'id|+1': 1,        'name': '@name', //英文名,        'cname': '@cname', //中文名    }]})// console.log(name);let webList = Mock.mock({    'webList|5': [{        'id|+1': 0,        'url': '@url("http", "baidu.com")', //url: http://www.baidu.com        'protocol': '@protocol', //随机生成一个url协议        'domain': '@domain', //随机生成一个域名,        'email': '@email', //随机生成一个邮箱地址,        'ip': '@ip' //随机生成一个ip地址    }]})// console.log(webList);let address = Mock.mock({    'addressList|5': [{        'id|+1': 1,        'region': '@region', //生成一个大区        'province': '@province', //生成一个省份        'city': '@city', //生成一个市        'country': '@country', //一个县        'zip': '@zip', //邮政编码    }]})console.log(address)

    模拟接口

    Mock.mock( rurl, rtype, data)

    介绍以下三个参数:

    • rurl:请求路径,可以是相对路径,也可以是绝对路径

    • rtype:请求方式,比如get post put delete等

    • data:要返回的模拟数据

    举例:

    import React, {useEffect} from 'react'import Mock from 'mockjs'import axios from 'axios'Mock.mock('/mock/usermsg', 'get', {    code: '0',    msg: 'success',    'list|5': [{ name: '@name', age: '@integer(18, 25)'}]})const DemoMock = () => {    useEffect(async () => {        const res = await axios('/mock/usermsg')        console.log(res.data)    })    return 

    hello react

    }export default DemoMock

    返回的结果:

    到此,相信大家对"在react中如何使用mockjs方法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    生成 数据 结果 属性 方法 点数 部分 字符 规则 字符串 中文 就是 数组 整数 数字 从属性 只是 大小 小数 布尔 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发ssh是框架吗 中国基岩版服务器ip大全 宽带登入无法连接服务器 宝山区第三方软件开发问答知识 店铺挂服务器里面安全吗 世界软件开发展览 软件开发 市场行情 本科数据库教材 怎么验证数据库取出的值正确 移动互联网科技馆 虹口区无线网络技术 大同入柜陪护床软件开发 黑龙江省关于网络安全检查的通知 闵行区银联数据库销售价格 软件开发软件设计是什么专业 语音服务器是英文怎么改成中文 关于网络安全的插画主题 昆明软件开发品牌 电脑无法访问另一台数据库 和平精英延迟低的服务器 为什么登录显示连接服务器失败 武汉网络安全基地总投资 消防救援站网络安全预案 拼多多直播服务器地址在哪里获得 崇明区技术软件开发成本 标准服务器能用手机下载吗 服务器ssh配置信息 国开网络安全管理制度 深圳好东西网网络技术 微信语音消息保存服务器多久
    0