前端小知识点杂记

1、vue组件内的data为什么要用函数形式而不是直接使用对象形式?

因为直接写对象形式是引用数据类型,各个组件中都有data的话会互相影响,但是以函数形式返回出的对象,每次都是返回一个新对象,不会造成各组件间数据干扰。

2、弹性盒中文本溢出隐藏省略出现的问题

弹性盒模型中,文本的溢出隐藏(以省略号结尾)会出现问题,不能正常的截断文本,以省略号结尾。

3、vue中props参数的default为什么数组可以直接写空数组、对象需要在外部包裹括号

因为{}会直接被解读为一个函数,返回值是undefined,而不是空对象

arr: {
      type: Array,
      default: () => [],
},
obj: {
      type: Object,
      default: () => ({}),
},

4、vue的data中如果有参数过于复杂且实际上不需要vue监听参数的变化时优化

初始化时,vue会对data做getter、setter改造,在现代浏览器里,这个过程实际上挺快的,但仍然有优化空间。当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter,这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。
此种问题场景可以是初始化了一个echarts等实例并保存放在vue数据中
优化方法:
① Object.freeze()
Vue 在遇到像 Object.freeze() 这样被设置为不可配置之后的对象属性时,不会为对象加上 setter getter 等数据劫持的方法
② 将参数提到export上方,这样vue就不会监听此对象

5、推荐一种监听生命周期的方法

this.$once

mounted() {
  window.addEventListener('scroll', this.fn)
  this.$once('hook:beforeDestroy', () => {
    window.removeEventListener('scroll', this.fn)
  })
}

6、ref数组问题

通过循环出来的ref取值时是个数组,但是直接写的重名ref取值时取的是最后一个出现的此名称ref元素

7、css设置文字溢出隐藏

// 多行溢出
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; // 最多展示几行
-webkit-box-orient: vertical;

// 单行溢出隐藏
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值