当前位置: 首页 > news >正文

vue3+ts的几个bug调试

由于编译问题,把几个type检查给关闭了,否则错误太多。

1)第一个检查出的问题,拼写错误数组的length,写成了lengh。

2)数组的对象引用。

torStatus = Array(8).fill({ ...defaultStatus }) as TorStatus[];

这种方式会创建一个长度为 8 的数组 torStatus,其中每个元素都引用了同一个对象,即 defaultStatus 对象的副本。这里的 { ...defaultStatus } 会生成一个新的对象副本,但在 fill 操作中,所有 8 个元素将引用这个同一个新对象。

因此,修改 torStatus[0] 会影响数组中的其他元素,因为它们实际上引用的是同一个对象(即数组中所有的对象是同一个内存地址)

必须改成

torStatus = Array(8).fill(null).map(() => ({ ...defaultStatus })) as TorStatus[];

这样,map() 会确保为每个数组元素生成一个新的对象副本,因此修改 cannyEtorStatus[0] 时,不会影响到数组中的其他元素。

3)UI中值的调试方法,

一般是用console.log打印,

还可以直接在UI中显示

调试方法直接在ui中显示值
<div>{{record.FloorNum + "," + (Number(column.dataIndex.slice(-2)) - 1) + "," + record.torStatus[Number(column.dataIndex.slice(-2)) - 1].incar }}
</div>

4)用watch监控变量时,一个变量是有效的,另一个变量更新后属性不怎么变化。

改成一样的,添加 deep: true 后生效。

watch(() => props.cannyEtorGroupStatus,(newStatus, oldStatus) => {console.log("in watch props.torGroupStatus");if (newStatus != undefined) {console.log("in watch props.torGroupStatus,if (newStatus != undefined)");updateDataSourceByEtorGroupStatus(newStatus);}},{ immediate: true, deep: true }  // 初始化时也会调用一次
);

因为watch 只会监听 浅层 数据变化(即监听对象或数组的引用变化),而不会对对象内部的属性变化进行监听。

当你在 watch 中添加 deep: true 选项时,表示你希望对 深层次的数据变化 进行监听。也就是说,它会递归地监控对象或数组的每一个属性或者元素的变化,无论是对象的某个属性,还是数组的某个元素发生变化,都会触发回调函数。

  • deep: true 用于深度监听对象或数组的内部变化。
  • 它会递归地监视对象或数组的每个属性或元素,无论其内容如何改变。
  • 使用时要小心性能开销,尤其是在数据结构较大的情况下

5)模拟dtu用落地包数据本地测试

http://www.lryc.cn/news/520764.html

相关文章:

  • DVWA靶场CSRF漏洞通关教程及源码审计
  • 前端开发:HTML常见标签
  • 【机器学习】主动学习-增加标签的操作方法-样本池采样(Pool-Based Sampling)
  • 【Rust自学】11.9. 单元测试
  • 深入理解Web存储机制:Cookie、SessionStorage与LocalStorage的区别
  • SpringBoot之BeanDefinitionLoader类源码学习
  • 【芯片封测学习专栏 -- 2D | 2.5D | 3D 封装的区别和联系】
  • 从硬件设备看Linux
  • open3d+opencv实现矩形框裁剪点云操作(C++)
  • git 本地操作
  • PL/SQL语言的文件操作
  • linux lsof 和 fuser命令介绍
  • [Python学习日记-76] 网络编程中的 socket 开发 —— 介绍、工作流程、socket 模块用法和函数介绍
  • vue(七) vue进阶
  • [Transformer] The Structure of GPT, Generative Pretrained Transformer
  • Django Admin 自定义操作封装
  • http和https有哪些不同
  • PL/SQL语言的数据库交互
  • 亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?
  • 从项目代码看 React:State 和 Props 的区别及应用场景实例讲解
  • Vue 学习之旅:核心技术学习总结与实战案例分享(vue指令下+计算属性+侦听器)
  • freertos的基础(二)内存管理:堆和栈
  • vue \n 换行不不显示
  • GPT 系列论文精读:从 GPT-1 到 GPT-4
  • 在 Ubuntu 上安装和配置 Redis
  • Excel中双引号问题
  • 【机器学习】主动学习-增加标签的操作方法-流式选择性采样(Stream-based selective sampling)
  • elementUI项目中,只弹一个【token过期提示】信息框的处理
  • SpringBoot开发—— SpringBoot中如何实现 HTTP 请求的线程隔离
  • 【LLM】25.1.11 Arxiv LLM论文速递