全局组件、全局指令、v-model是语法糖、vue2响应式的缺点

本文详细介绍了Vue中的全局与局部组件以及指令的使用。全局组件在main.js中注册,可在应用中任意使用;局部组件仅限于导入它的父组件内。同样,全局指令在main.js中定义,局部指令则在组件内部定义。v-model作为语法糖,简化了父子组件间的数据交互。尽管可以不使用v-model,但它提供了便利。Vue的响应式系统存在一些限制,如对象新增属性和部分数组方法不支持响应式,可通过$set解决。
摘要由CSDN通过智能技术生成

全局组件

局部组件:在父组件中导入的这个MyCom组件,只能在当前组件中使用

import MyCom from './MyCom'
export default {
   components: { MyCom } 
}

全局组件:在main.js中导入

import MyCom from './Mycom'
// Vue.component(组件名,组件)
Vue.component('MyCom', MyCom)

全局指令

局部指令

export default {
   directives: {
     focus: {
       inserted(el){
         el.focus()
       }
     }
   }
}

全局指令
在main.js中导入

Vue.directive('focus', {
  inserted(el){
         el.focus()
       }
})

v-model是语法糖

语法糖: 对一个更加复杂的操作的封装

// 1. v-model 在表单元素上使用
<input v-model="xxx" />

// 2. v-model 在自己定义的组件上使用
<MyCom v-model="xxx" />
上面的写法是快捷方式,它等价于如下复杂的写法:
<MyCom :value="xxx" @input="新值=>xxx=新值" />

// v-model做两件事:
// 1. 向子组件传来一个名为value的属性
// 2. 在子组件监听input事件,这个事件的回调中修改value所绑定的值

问:为啥要在自己的组件上用v-model?
答:v-model写法比较简单,一个指令实现两个功能:子传父(input事件),父传子(value属性)。
问:可不可以不用?
答:可以。

vue2响应式的缺点

响应式:数据改变–>视图跟着变

对象新增的属性没有响应式

数组的部分操作没有响应式

● push(),pop(),shift(),unshift(),splice(),sort(),reverse()
7个可以直接修改数组的方法有响应式

解决办法
this.$set(obj,"propertyName","value")
this.$set(arr,"index","value")

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值