摘要: 刷新页面时不会触发组件的 onUnmount 事件。 因为刷新页面会直接销毁整个页面的 DOM 树和内存中的组件实例,属于“强制清空”,而非组件正常从 DOM 树中卸载的流程。 而 onUnmount 的核心是“组件正常卸载(如路由切换、条件渲染移除)时执行”,仅在组件主动脱离 DOM 树的场景下触 阅读全文
posted @ 2025-10-03 21:25 罗毅豪 阅读(28) 评论(0) 推荐(0)
摘要: 实现防重复提交 1.按钮置灰和恢复(触发函数时应马上置灰,再执行其他逻辑,最后恢复按钮状态,否则容易在执行函数的置灰语句前再次触发函数,可以使用try-finally结构对函数进行改造) 2.前端对请求进行缓存(实现请求最终只有一次的情况) 3.后端对同一接口频繁调用设置时间间隔 4.提交时前端传递 阅读全文
posted @ 2025-10-03 21:14 罗毅豪 阅读(6) 评论(0) 推荐(0)
摘要: 原代码 const commitForm = async () => { btnLoading.value = true; isCommitted.value = true; //过滤出显示字段的列表 let showFieldsList = []; for (let comp of compLis 阅读全文
posted @ 2025-09-22 22:44 罗毅豪 阅读(6) 评论(0) 推荐(0)
摘要: 原代码为 for (let tab of tabList.value) { const subFormData = subOrderListMap.value[tab.subFormWebUuid]; debugger if (subFormData) { tab.formStatus = "已完成 阅读全文
posted @ 2025-09-21 10:18 罗毅豪 阅读(6) 评论(0) 推荐(0)
摘要: JS之数组直接用include方法和数组转集合后使用has方法效率比较: 数据量小时差异可忽略,数据量大时 “数组转集合再用 has” 效率远高于数组的 includes。 核心原因是两者的查找原理不同: 1. Array.includes():本质是遍历数组逐个比对,时间复杂度为 O(n),数据越 阅读全文
posted @ 2025-09-17 16:10 罗毅豪 阅读(7) 评论(0) 推荐(0)
摘要: 以下是 Map 正确序列化与反序列化的完整代码示例,包含核心转换逻辑和验证步骤: // 1. 定义一个待序列化的 Map(包含不同类型的键值) const myMap = new Map([ ['name', '豆包'], [123, '数字键'], [true, '布尔值键'], [{ id: 1 阅读全文
posted @ 2025-09-17 16:05 罗毅豪 阅读(13) 评论(0) 推荐(0)
摘要: 在 Java 的org.apache.commons.lang3.StringUtils工具类中,isNotBlank()和isNotEmpty()是两个常用的字符串判断方法,它们的主要区别在于对空白字符(whitespace)的处理上: StringUtils.isNotEmpty(CharSeq 阅读全文
posted @ 2025-09-13 19:02 罗毅豪 阅读(10) 评论(0) 推荐(0)
摘要: 需求:变更URL的传参但不刷新页面 代码如下: // 解析URL参数为对象 function getUrlParams() { const params = {}; const search = window.location.search.substring(1); if (search) { s 阅读全文
posted @ 2025-09-08 10:56 罗毅豪 阅读(17) 评论(0) 推荐(0)
摘要: 现况:电脑双网卡,同时连接wifi和网线,运行应用程序需要连接wifi,但是wifi流量用完了,无法上网,而插网线可以上网,同时连接时访问外网网页失败,无法上网。 解决方案1:连wifi + 网线,然后写个脚本让.50走wifi,其他走网线 要理解 “连 WiFi + 网线,写脚本让.50 走 Wi 阅读全文
posted @ 2025-09-06 15:47 罗毅豪 阅读(104) 评论(0) 推荐(0)
摘要: 原代码为 <van-radio v-for="dict in item.dicData" :key="dict.value" :name="dict.value" :disabled="isCompReadOnly" class="option" > <span class="label">{{ d 阅读全文
posted @ 2025-08-23 10:51 罗毅豪 阅读(8) 评论(0) 推荐(0)
摘要: 需求:使用burp抓包,可以看到富文本编辑器中图片是以base64形式在img标签内的,那就可以添加onclick=alert(1)来注入xss代码。 这样用户在点击图片时就会触发xss代码,进行弹窗。若通报发布,那所有的用户都可以查看到通报内容,如果攻击者恶意伪造弹窗内容进行钓鱼,用户可能会当真, 阅读全文
posted @ 2025-08-11 14:33 罗毅豪 阅读(48) 评论(0) 推荐(0)
摘要: 1.安装zxing "devDependencies": { "@zxing/library": "^0.21.3", } 2.手机端页面使用示例(该扫码功能也可用于PC端扫码) <template> <div :class="subFormItem ? 'sub-comp' : 'custom-c 阅读全文
posted @ 2025-07-14 11:21 罗毅豪 阅读(71) 评论(0) 推荐(0)
摘要: 我们在使用电脑时,经常需要截取多个截图同时进行对比,可使用Snipaste软件。 使用方式: F1-截取截图 F3-固定截图 双击-关闭截图 阅读全文
posted @ 2025-07-08 15:48 罗毅豪 阅读(13) 评论(0) 推荐(0)
摘要: 我写的原代码如下: const getBatchFileUrlAddLock = (minioObjectName) => { if (sessionStorage.isGetResUrlReqLocked == 1) { setTimeout(() => { getBatchFileUrlAddL 阅读全文
posted @ 2025-06-20 10:17 罗毅豪 阅读(40) 评论(0) 推荐(0)
摘要: 使用|| 使用?? 可看出若a的值为0,只有以??方法为变量提供的默认值的方式是正确的。 阅读全文
posted @ 2025-06-18 09:02 罗毅豪 阅读(7) 评论(0) 推荐(0)
摘要: 最近开发时,使用console.log输出数组,如下图所示,显示数组长度是1,但是展开后却没有数组项。 根据查询和分析,了解到: 若对数组输出后,继续对数组进行操作,那会影响之前的输出,出现输出数组长度不一致的问题。 例如: const userList = [1, 2, 3]; console.l 阅读全文
posted @ 2025-06-06 14:23 罗毅豪 阅读(15) 评论(0) 推荐(0)
摘要: 1. 没有++和--运算符,需要通过+=1和-=1来实现 2. 可使用 int() 函数把字符串转换为整数 3. 使用 float() 函数可以把字符串转换为浮点数 4. str() 能把多种数据类型转换为字符串,包括数字 5. 保留两位小数(结果为字符串类型),四舍五入,示例: num = 3.1 阅读全文
posted @ 2025-05-24 14:50 罗毅豪 阅读(13) 评论(0) 推荐(0)
摘要: Vue组件常用的import如下: import { ref, computed, toRefs, watch, onMounted, h, nextTick, defineAsyncComponent, reactive, shallowRef, getCurrentInstance, injec 阅读全文
posted @ 2025-04-15 15:36 罗毅豪 阅读(27) 评论(0) 推荐(0)
摘要: 由于后端限制不能频繁请求,所以500ms内的二次请求会返回服务器繁忙,请稍后再试,但是业务需要对同一接口频繁进行多次请求,因此,可以通过给请求结果增加缓存来解决。 request.js修改:增加adapter配置 import axios from 'axios' import cacheAdapt 阅读全文
posted @ 2025-04-13 12:53 罗毅豪 阅读(34) 评论(0) 推荐(0)
摘要: 本代码通过Vue循环<component>组件时,调用子组件的校验方法,实现多态,避免修改父组件,增强扩展性。 父组件原代码: <div v-for="comp in compList"> <template v-if="comp.isShow"> <component :is="compMap[c 阅读全文
posted @ 2025-04-08 09:55 罗毅豪 阅读(28) 评论(0) 推荐(0)
摘要: JS实现监听对象属性的变化并获取变化的属性: 原代码: watch( () => formData.value, (newVal, oldVal) => { for (const key in newVal) { if (newVal[key] !== oldVal[key]) { console. 阅读全文
posted @ 2025-04-07 10:19 罗毅豪 阅读(137) 评论(0) 推荐(0)
摘要: 我使用 const conditions = [ ...item.value.conditions ]; 拷贝出一个新数组,但是当我修改新数组的元素,原数组也发生了变化,因此我判定扩展运算符为浅拷贝。 修改为深拷贝的方法为: const conditions = JSON.parse(JSON.st 阅读全文
posted @ 2025-04-06 15:55 罗毅豪 阅读(30) 评论(0) 推荐(0)
摘要: 原代码支持多选 <a-tree ref="tree" checkable blockNode v-model:expandedKeys="expandedKeys" :replace-fields="replaceFields" :tree-data="treeData" :load-data="g 阅读全文
posted @ 2025-03-31 16:08 罗毅豪 阅读(68) 评论(0) 推荐(0)
摘要: 使用Bandizip压缩文件: 1.使用Bandizip可以压缩成tar包,满足运维部署的要求。 2.使用Bandizip压缩成zip格式速度快,亲测是WinZip打包时间的五分之一。 阅读全文
posted @ 2025-03-28 14:50 罗毅豪 阅读(45) 评论(0) 推荐(0)
摘要: 在使用<a-auto-complete>输入首个汉字时,输入法总是自动退出,剩下一个英文字母在输入框,代码如下: <a-auto-complete v-model:value="formState.name" :allowClear="true" @clear="clearContent" :opt 阅读全文
posted @ 2025-03-26 10:00 罗毅豪 阅读(34) 评论(0) 推荐(0)
摘要: 1.给<a-upload>增加accept属性,accept属性为这些文件的MIME类型。 <a-tooltip> <template #title>只允许上传doc(x),xls(x),txt,pdf</template> <a-upload v-model:file-list="fileList 阅读全文
posted @ 2025-03-24 14:49 罗毅豪 阅读(172) 评论(0) 推荐(0)
摘要: Antd之解决<a-table>只选了一行就全部选上的缺陷: 将原<a-table>代码 <a-table :columns="columns" :data-source="dataSource.list" :row-selection="{ selectedRowKeys: selectedKey 阅读全文
posted @ 2025-03-11 15:58 罗毅豪 阅读(61) 评论(0) 推荐(0)
摘要: 1.<template>配置示例 <!-- 表格 start--> <a-table :columns="columns" :data-source="tableData.list" :loading="loading" style="margin-top: 24px" :pagination="f 阅读全文
posted @ 2025-02-12 16:58 罗毅豪 阅读(13) 评论(0) 推荐(0)
摘要: 1.去掉皮肤瑕疵-污点修复画笔 2.把手脚变瘦-液化滤镜 3.把脸变白-应用图像-R通道-滤色-不透明度 阅读全文
posted @ 2025-01-20 19:34 罗毅豪 阅读(18) 评论(0) 推荐(0)
摘要: 需求:调用通讯录子组件选人,选完人后返回数据到父组件进一步处理。 1.引用子组件 <org-picker ref="orgPicker" title="请选择人员" multiple :selected="orgPickerSelected" @handleSelected="selected" t 阅读全文
posted @ 2024-12-10 16:21 罗毅豪 阅读(35) 评论(0) 推荐(0)
摘要: 我开发的一个页面,同时多次使用了同一个组件,但是这个组件一加载就会调用同一个方法,最终同时调用同一接口。 但是我们后端对于同一接口的调用频率进行了限制,不允许短时间内重复提交,需要在一个时间间隔后提交才能请求成功。 原代码为: onMounted(() => { const code = item. 阅读全文
posted @ 2024-11-18 16:23 罗毅豪 阅读(85) 评论(0) 推荐(0)
摘要: 1.小一寸照片的像素尺寸为260像素(宽)× 378像素(高),一寸的像素尺寸为295像素(宽)× 413像素(高)。 2‌‌.蓝底照片的颜色参数RGB值为R:67, G:142, B:219。 3.人物头部距离图片顶部的背景距离小一些。 阅读全文
posted @ 2024-10-19 20:26 罗毅豪 阅读(568) 评论(0) 推荐(0)
摘要: 1. ctrl + shift + p 2. 输入:open workspace settings(JSON) 3. 添加配置 { "workbench.editor.wrapTabs": true, } 即可。 阅读全文
posted @ 2024-10-11 09:41 罗毅豪 阅读(1012) 评论(0) 推荐(0)
摘要: 父组件给子组件传多个不确定的参数,可以使用v-bind进行传参。 父组件代码示例: <template> <component ref="form" :value="value" :disabled="disabled" :is="currentComp" :mode="mode" v-bind=" 阅读全文
posted @ 2024-10-09 11:40 罗毅豪 阅读(82) 评论(0) 推荐(0)
摘要: 1.开发拍照上传页面 - andImgCapture.vue,包含镜头翻转功能 <template> <div> <van-button icon="plus" type="primary" :disabled="disabled" @click.stop="clickCamera" ref="up 阅读全文
posted @ 2024-09-23 15:41 罗毅豪 阅读(1426) 评论(0) 推荐(0)
摘要: 1.<template>部分 <a-upload name="file" :customRequest="importExcelData" accept=".xls,.xlsx" class="uploadBtn" :showUploadList="false" > <a-button type=" 阅读全文
posted @ 2024-09-04 09:39 罗毅豪 阅读(510) 评论(0) 推荐(0)
摘要: File对象有两种形态, 在请求时为: 控制台输出为: 从formData中获得fileList对应的File对象,并转换为base64字符串,再转换回File对象,代码示例如下: const fileList = uploadFormData.get("fileList"); console.lo 阅读全文
posted @ 2024-08-02 16:49 罗毅豪 阅读(652) 评论(0) 推荐(0)
摘要: 需求:根据判断当前是PC端还是手机端,给页面显示不同的内容。 const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); const title = ref("服务器错误"); const subTitle = re 阅读全文
posted @ 2024-08-02 16:39 罗毅豪 阅读(22) 评论(0) 推荐(0)
摘要: CSS设置页面背景色为浅灰色,代码示例如下: .list { background: #ebedf0; height: 100vh; overflow-y: scroll; overflow-x: hidden; } 即可。 阅读全文
posted @ 2024-07-29 15:54 罗毅豪 阅读(437) 评论(0) 推荐(0)
摘要: 在这里记录一下开发过程的一些小要点。 这些小要点暂时无法单独写成一篇文章,如果以后有时间可以对单个小要点进行知识扩展,形成文章。 1.<van-tabs>加上sticky属性,即可实现固定定位。 2.媒体查询区间左闭右开。 3.普通的时间字符串可用大于小于号比较大小。 4.图片加载出现404,给im 阅读全文
posted @ 2024-07-25 17:14 罗毅豪 阅读(21) 评论(0) 推荐(0)