Mock模拟数据时,图片无法加载

在使用Mock模拟图片数据时,前端页面无法渲染图片,控制台出现报错。问题出在图片大小上,当直接打开图片地址,显示图片过大。调整Mock配置中图片尺寸(如从140*140改为更小尺寸)后,图片能正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Mock模拟图片数据时,前端页面无法渲染图片

并且在控制台报错

但是模拟图片的地址是有的,当单独打开图片地址时

显示图片过大

mock配置代码

//调用Mock.mock方法生成随机数据
Mock.mock(()=>{
    for(let i = 0;i<10;i++){
        // eslint-disable-next-line no-unused-vars
        const a = '#' + Random.integer(180,255).toString(16)+
        Random.integer(140,255).toString(16)+Random.integer(120,220).toString(16)

        let t = null //用来存放Random随机生成的用户名
        let male = ['男','女']
        data.push({
            userId:1001+i,
            userName:t=Random.cname(),
            userMale:male[Random.integer(0,1)],//随机获取(0-1)随机数,将该随机数作为male数组的下标,获取随机性别
            headImage:Random.image('140*140',a,t),//生成随机图片:第一个参数:图片的大小,第二个参数是颜色,第三个参数是文本
            userBirthday:Random.datetime('yyyy-MM-dd HH:mm:ss'),
            userAddress:Random.county(true)
        })
    }
})
//查询所有接口
Mock.mock('/api/find','get',data)

将headImage:Random.image('140*140',a,t)中的140*140改小一点,图片正常显示

### 如何在 Vue 3 中设置和使用 Mock 数据进行接口模拟 #### 安装依赖库 为了能够在 Vue 3 项目中使用 `mock.js` 来模拟数据,首先需要安装该库。可以通过 npm 或 yarn 安装: ```bash npm install mockjs --save-dev ``` 或者 ```bash yarn add mockjs --dev ``` #### 配置 Mock 模拟数据 创建一个新的文件用于配置所有的 mock 接口,在项目的 src 文件夹下新建一个名为 `mock` 的目录,并在此目录内建立 `index.js` 文件。 ```javascript // src/mock/index.js import Mock from 'mockjs' const Random = Mock.Random; Mock.mock('/api/getNewsList', () => { let result = []; for (let i = 0; i < 10; ++i) { result.push({ id: Random.guid(), title: Random.csentence(5, 30), content: Random.cparagraph() }); } return { code: 200, data: result }; }); ``` 这段代码定义了一个 `/api/getNewsList` API 请求的模拟响应[^1]。 #### 修改 main.js 引入 Mock 设置 为了让应用程序启动自动加载这些 mock 规则,需修改入口文件 `main.js`: ```javascript // main.js import { createApp } from 'vue' import App from './App.vue' import './mock' // 加载mock服务 createApp(App).mount('#app') ``` 这样当应用运行起来之后就会自动注册之前定义好的 mock 路由规则[^3]。 #### 封装 Axios 并处理请求拦截器 对于实际发送 HTTP 请求的部分,通常会通过 axios 库来进行操作。可以在项目里封装一层 axios 实例以便更好地管理全局配置以及统一处理错误逻辑等。 ```javascript // src/utils/request.js import axios from "axios"; const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, timeout: 5000 }); service.interceptors.request.use( config => { console.log('Request Interceptor:', config); return config; }, error => Promise.reject(error) ); export default service; ``` 此部分实现了简单的请求日志打印功能并导出了自定义的服务实例供组件调用[^2]。 #### 组件内部发起请求测试效果 最后在一个具体的 vue 单文件组件(SFC)里面尝试向刚才设定的 mock api 发送 GET 请求查看返回的结果是否符合预期。 ```html <template> <div v-if="news.length"> <ul> <li v-for="(item,index) in news" :key="index">{{ item.title }}</li> </ul> </div> </template> <script setup lang="ts"> import { ref, onMounted } from 'vue'; import request from '@/utils/request'; const news = ref([]); onMounted(() => { request.get("/api/getNewsList").then(response => { if (response.code === 200){ news.value = response.data; } }).catch(err => console.error(err)); }) </script> ``` 上述代码展示了如何利用组合式API (`setup`) 和 TypeScript 编写一个简单列表展示的例子,其中包含了获取新闻列表的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值