用来记录工作中遇到的问题
目录
- 引用数据类型的相互影响
- 事件捕获导致的错误触发事件
引用数据类型的相互影响
类似如下代码:
const obj = {a: 1, b: 2};const array = [];for(let i = 0; i<4; i++){array.push(obj)}array[0].a = 'fix'console.log(array);
将已定义的对象obj,直接加入到数组中。而由于引用了同一个对象,会相互影响。
项目中 array 数组应用到了多个 el-select 上,导致勾选一个select,其他select都会改变。
代码修改如下,会更优雅:
const array = Array.from({length: 4}, () => ({a: 1, b: 2}))
array[0].a = 'fix'
console.log(array);
通过 Array.from 创建数组,第一个参数传长度,第二个参数返回值是给数组每一项的值
每次会返回一个新的对象
事件捕获导致的错误触发事件
A 上绑定了一个事件,本意是在切换卡片时触发,会清空 data 数据
B 上绑定了一个勾选框的 change 事件,当勾选时触发,会修改 data 数据
在开发后发现,每次勾选时,执行了其他逻辑,莫名改变了数据
检查代码后发现,每次点击B,会先执行父组件的 A事件,再执行 B事件,导致的错误