【Vue3大事件 | 项目笔记】第六天

前言:Vue3大事件项目是一个基于Vue3的PC端项目,本系列文章我将总结我在这个项目中学到的知识点,写项目笔记。如果你正好在学或巩固Vue3,希望本系列文章可以帮助到你。

【Vue3大事件 | 项目笔记】第六天

今日完结:

  • 了解AI插件Copilot
  • 完成个人中心基本资料页面
  • 完成个人中心更换头像页面
  • 完成个人中心重置密码页面

今日收获:

1.利用 $el 模拟点击 el-upload 内部 input 实现文件选择触发

el-upload 组件默认是 "点击上传区域(比如预览图 / 占位框)" 触发文件选择弹窗,样式和触发区域固定(图中白色框)

就比如当我们点击白色框(对应代码<el-upload ref="uploadRef" :auto-upload="false"></el-upload>)的时候,就会进行图片的选择,而如果我们想要实现点击"选择图片"按钮也能实现相应的功能,我们就要利用 $el 模拟点击 el-upload 内部 input 实现文件选择触发,

javascript 复制代码
<script setup>
import { ref } from 'vue'
const uploadRef = ref(null)
</script>


<template>
  <el-upload ref="uploadRef" :auto-upload="false"></el-upload>
  <button @click="uploadRef.$el.querySelector('input').click()">选择图片</button>
</template>

Vue 模板引用(ref) :uploadRef 是通过 ref="uploadRef" 给 el-upload 组件绑定的模板引用,用于在代码中直接访问组件的 DOM 元素或实例。
**el 属性** : Vue 组件实例的 el 属性指向该组件渲染后对应的根 DOM 元素(即 el-upload 最终生成的 DOM 节点)。
DOM 操作(querySelector/click) :querySelector('input') 是原生 JS 方法,用于从 DOM 节点中查找匹配的子元素;click() 是原生 JS 方法,用于模拟鼠标点击事件。
自定义上传触发逻辑 :覆盖 el-upload 默认的触发方式(默认点击上传区域触发选择文件),改为通过自定义按钮触发,提升交互灵活性。

2.图片上传预览

用户选择本地图片后,我们不想要图片先上传到服务器,就能在页面上看到选中的图片效果,就可以用到FileReader + readAsDataURL 的组合方案。

javascript 复制代码
// 1. 创建FileReader实例:FileReader是浏览器提供的内置对象,专门用于异步读取本地文件内容
const reader = new FileReader()

// 2. 读取文件为DataURL格式(Base64编码):
// file.raw 是el-upload组件封装后返回的原生File对象(包含用户选择的本地图片的完整信息)
// readAsDataURL方法会将图片文件的二进制内容转换成 `data:image/png;base64,xxxx` 格式的字符串
reader.readAsDataURL(file.raw)

// 3. 监听文件读取完成事件:FileReader读取文件是异步操作,读取成功后触发onload回调
reader.onload = () => {
  // 把读取后的Base64字符串赋值给图片显示的src属性(imgUrl),实现本地图片即时预览
  imgUrl.value = reader.result
}

杂项知识点:

FileReader(Base64)与 URL.createObjectURL () 区别

【Vue3大事件 | 项目笔记】第五天中我们也讲到了关于图片预览的知识(URL.createObjectURL () ),那和本次(FileReader(Base64))的有什么不同呢,以下是相关说明:


总结:

今天网上主要讲的是如何用ai辅助我们写代码,效率很快,但这个要建立在我们知识点都懂了的情况下,因为我们不能完全依赖ai,如果提示词给的不全,ai有很多时候会修改我们已经完成的代码,有时甚至会返回一个错误代码。总的下来,做这个项目对我的收获很大,认识了Element组件库,AI插件Copilot,很多优化项目的方法等等,希望你通过我的这系列文章也有所收获,感谢你的阅读。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

相关推荐
aaaameliaaa6 分钟前
分支与循环
c语言·笔记
中屹指纹浏览器16 分钟前
2026住宅代理IP纯度检测、链路溯源与指纹浏览器适配调优方案
经验分享·笔记
智码看视界1 小时前
老梁聊全栈系列:Vue3核心与组合式API深度解析
javascript·vue.js·ecmascript
xuhaoyu_cpp_java9 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
阿猫的故乡12 小时前
Vue过渡动画从入门到装X:淡入淡出、滑动、列表动画、第三方库全搞定
前端·javascript·vue.js
裕波12 小时前
Vue&ViteConf 2026 将于 7 月 18 日在上海举办,尤雨溪将现场发表主题演讲
vue.js·vite
Cloud_Shy61812 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
做cv的小昊12 小时前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论
星恒随风12 小时前
C++ 类和对象入门(五):初始化列表、explicit 和 static 成员详解
开发语言·c++·笔记·学习·状态模式
鹤鸣的日常13 小时前
前端运行时动态环境变量方案
前端·react.js·docker·前端框架·vue·gitlab