大二暑期实习记录(一):处理组件绑定数据错误(数组解构,map()方法)
好家伙,搬砖
今天在做组件迁移(从一个旧平台迁移到一个新平台)的时候,发现了一些小小的问题:
1.错误描述:
在穿梭框组件中,使用"节点配置"方法添加数据的时候,左测数据选择框直接消失了

这里我们猜测一下,大概是数据处理出了问题
此处,我们使用"数据绑定"绑定数据方法:
定义数据:

绑定数据

2.错误分析
此时我们去看看"节点配置"方法和"数据绑定"绑定的数据长什么样子
后面对比两组数据
options variablee

到这里大概能看出问题来了,显然左边的数据多包了一层"model"
大概写个map()就能搞定
3.源码定位
那么,我们去翻该组件的源码:

哇塞,公司的人能敲出这么漂亮的组件,真是太厉害了


.....
emmmm...


Element-UI,不愧是你啊
好了,回到正题
4.修改错误
此处我们直接定位到数据相关的核心部分
组件绑值
:data="(dataType == 'def' ? optionConfig : options)"
("def"对应"节点配置","cus"对应"数据绑定")
数据props:
props: {
optionConfig: {
type: [String, Object, Array],
default: () => {
return []
}
},
options: {
type: [Array, String, Object],
default: () => {
return []
}
},
}
也就是说,此处options中的数据没有经过处理就直接拿去使用了,那么我们只需要加上处理就好
我们使用计算属性,对数据进行一个预处理
computed: {
optionsnext: {
get() {
let temp = [];
temp = this.options?.map((item) => {
return {
...item,
disabled: item.model["disabled"],
key: item.model["key"],
label: item.model["label"],
};
}) ?? []
return temp;
}
},
}
随后再把它绑上
:data="(dataType == 'def' ? optionConfig : optionsnext)"
看看效果,

搞定!
5.代码解释
computed: {
optionsnext: {
get() {
let temp = [];
temp = this.options?.map((item) => {
return {
...item,
disabled: item.model["disabled"],
key: item.model["key"],
label: item.model["label"],
};
}) ?? []
return temp;
}
},
}
5.1.问:此处"?"和"??"的作用分别是什么,为什么要这样写?
答:
?.(可选链操作符)用于在访问属性或调用方法之前,先判断对象是否为null或undefined。
如果对象为null或undefined,就会短路返回undefined,而不会继续执行后续的属性访问或方法调用。
这样可以避免在空值上尝试访问属性或调用方法时出现错误,简化了代码的写法和错误处理。
??(空值合并操作符)用于在变量为空(null或undefined)时,提供一个默认值。
当左侧的值为null或undefined时,空值合并操作符会返回右侧的默认值。如果左侧的值不为空,则返回左侧的值。
这样的写法避免了抛出异常。
5.2.问:...item的作用?
...item 的作用是使用对象展开运算符将 item 对象的属性和值依次展开到新的对象中。
这样可以创建一个新的对象,其中包含了原始对象的所有属性及其对应的值。
...item 是一种简洁的写法,能够快速复制对象的属性和属性值。
它在使用对象字面量创建新的对象时很常用,可以方便地克隆或创建新的对象,而不改变原始对象的引用。
大二暑期实习记录(一):处理组件绑定数据错误(数组解构,map()方法)的更多相关文章
- Angular4.x 创建组件|绑定数据|绑定属性|数据循环|条件判断|事件|表单处理|双向数据绑定
Angular4.x 创建组件|绑定数据|绑定属性|数据循环|条件判断|事件|表单处理|双向数据绑定 创建 angular 组件 https://github.com/angular/angular- ...
- vuex2.0.0爬坑记录 -- mutations的第一个参数state不能解构
今天在学习vuex的过程中,遇到了一个很困扰人的问题,最终利用vuex的状态快照工具logger解决了问题. 问题是这样的,我在子组件中使用了mapState()函数来将状态映射至子组件中,使子组件能 ...
- IOS组件绑定无效错误
报错的原因:界面按钮事件没有绑定到源代码或者相关的代码被注释了.比如你的button组件以及绑定到IBOutlet,但是viewcontrol.m上没有相关的代码,就会出现异常.
- Vue组件之间数据交互与通信
Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 一.父组件向子组件传递数据 在 Vue 中,可以使用 props 向子组件传 ...
- ES6入门之变量的解构赋值(二)
前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...
- ES6 变量与解构(二)
一.变量的声明与使用 [测试示例需要在node环境中测试,浏览器环境下并不完全兼容ES6代码]ES6中可以使用 {} 来包含任意一段代码,被 {} 包裹的内容称为一个代码块(局部作用域) let关键字 ...
- vue单文件组件形成父子(子父)组件之间通信(vue父组件传递数据给子组件,子组件传递数据给父组件)
看了很多文章,官网文档也有看,对父子组件通信说的不是很明白:决定自己总结一下: vue一般都使用构建工具构建项目:这样每个组件都是单文件组件:而网上很多文章都是script标签方式映入vue,组件通信 ...
- 化学专业大二转战Android开发,终于拥有了鹅厂暑期实习offer
我是双非学校,应用化学专业,一年前我大二,现在我大三.一年前我两手空空,现在我拥有了鹅厂暑期实习的offer. 虽然结果是好的,但我春招实习的道路远没有这么简单和辉煌,它是无比坎坷的:每个人应该量力而 ...
- 杂记:腾讯暑期实习 Web 后端开发面试经历
今天面试(一面)腾讯暑期实习 Web 后端开发,一言难尽. 第一部分,常规的自我介绍. 介绍完,面试官问我对人工智能有什么理解?深度学习和机器学习的区别?对调参有什么见解?语音识别中怎样运用了机器学习 ...
- 我的阿里、腾讯暑期实习Offer经历
三四月份对我拿来说是个忙碌的两个月,实验室项目到了关键的时刻,自己又需要抽身去找暑期实习,总之过得很快.值得欣慰的是幸运的拿到了阿里和腾讯的暑期实习offer,也算是对三四月份的忙碌一些回报吧.阿里的 ...
随机推荐
- java线程的创建
文章目录 前言 进程 线程 使用线程 继承Thread 线程随机性 .start()的顺序不代表.run()的顺序 实现Runnable 实例共享造成的非线程安全问题 线程常用方法: 判断线程是否为停 ...
- 【Azure Developer】Azure AD 注册应用的 OAuth 2.0 v2 终结点获取的 Token 解析出来依旧为v1.0, 这是什么情况!
问题描述 使用 Azure AD 注册应用 Oauth2 v2.0的终结点(OAuth 2.0 token endpoint (v2):https://login.partner.microsofto ...
- Linux 给用户赋予操作权限
赋予local目录读写权限给keesail,别的用户对这个目录没有任何权限. chown -R keesail:keesail ./local chmod 777 文件夹名称,可以把文件夹设置成所有用 ...
- 高精度------C++
高精度运算------C++ (加减乘除) 例:ZOJ2001 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1001 The ...
- 2021-10-12:验证回文串。给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串 。输入: “A man, a plan
2021-10-12:验证回文串.给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写.说明:本题中,我们将空字符串定义为有效的回文串 .输入: "A man, a ...
- 代码随想录算法训练营Day12 栈与队列
代码随想录算法训练营 代码随想录算法训练营Day12 栈与队列| 239. 滑动窗口最大值 347.前 K 个高频元素 总结 239. 滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的 ...
- 白帽子讲web安全
世界安全观 Web安全筒史 起初,研究计算机系统和网络的人,被称为"Hacker","Hacker"在中国按照音译,被称为"黑客" 对于现代 ...
- Java 新的生态,Solon v2.3.2 发布
Solon 是什么框架? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(全球第二级别的生态).与其他框架相比,它解决了两个重要的痛点:启动慢,费资源. 解决痛点? ...
- 20个Golang片段让我不再健忘
前言 本文使用代码片段的形式来解释在 go 语言开发中经常遇到的小功能点,由于本人主要使用 java 开发,因此会与其作比较,希望对大家有所帮助. 1. hello world 新手村的第一课,毋庸置 ...
- Hybrid 实验
实验拓扑 实验需求 按图示给各 PC 配置 IP 地址 PC1属于 VLAN 10 : PC2 与 PC5 属于 VLAN 20:PC4属于 VLAN 30 实现全网互通 实验步骤 1.配置链路聚合 ...