Vue.js官网文档阅读——对于本人的查缺补漏(组件篇)

Vue官网

1.组件命名

当我们在使用Vue.component(‘compname’,{})来定义一个组件时,第一个参数即是我们组件的名称,组件的命名有两种方式:

第一种:
kebab-case (短横线分隔命名)
eg: t-upload
当我们使用这种命名方式时,
在引用该组件时使用也要用这种形式<t-upload>...</t-upload>

第二种:
PascalCase(首字母大写命名)
eg:TUpload
当我们在使用这种命名方式时,
在引用该组件时可以选用两种形式
一种:<t-upload>...</t-upload>
另一种:<TUpload>...</TUpload>

prop

单向数据流

所有prop都使得父子prop之间形成了一个单向下行绑定;父级prop的更新会向下流动到子组件中,但是反过来则不行,这样会防止从子组件意外变更父组件的状态,从而导致你的应用数据流向难以理解。
每次父组件发生变更时,子组件中所有的prop都会刷新为最新的值。这意外着你不应该在一个子组件内部改变prop。
prop不可以对其中的值进行修改,但可以经过一下两个处理,变成一种新的prop供大家使用:

方法一:在data中新定义一个变量,接收传递进来的prop
props:['show'],
data(){
	return {
		solveShow:this.show+‘处理后’
	}
}
方法二:computed属性返回一个新的值
props:['show'],
computed:{
	solveShow(){
		return this.show+'处理后'
	}
}

prop验证

类型检查:

方式一:
props:{
	propA:Number,  //参数必须是Number类型
	propB:[String,Number], //参数可以是String或Number类型
	propC:{
		type:String,
		default:'11',
		required:true,
	}, //指定类型,默认值,是否必需
	propD:{
		type:Object,
		default:function(){
			return {messga:'hello'}
		}
	},
	propE:{
		validator:function(value){
			return ['success','warning','danger'].indexOf(value)!==-1
		}
	},// 验证
}

类型检查中的type可以是下列原生构造函数的一个:
String、Number、Boolean、Array、Object、Date、Function、Symbol

对于绝大多数attribute来说,从外部传给组件的值会替换掉组件内部的值。

事件

不同于组件和prop,事件是你用什么方式命名,你在使用时就还用这个变量。例如,你用驼峰式命名,调用时依然要用驼峰式,转换成中划线就不是同一个事件了,反之亦然。

.sync

.sync修饰符,作为一个编译时的语法糖存在,他会被扩展为一个自动更新父组件属性的v-on监听器。实例来源

eg:
<parent :items.sync="data1"></parent>
等同
<parent :items="data1" @update:items="val => data1 = val"></parent>
watch: {
      items(val) {
        this.tableData = val
      },
      tableData(val) {
        this.$emit('update:items', val)
      }
    },
    computed: {
    },
    data() {
      return {
        tableData: []
      }
   }

.native

实例讲解

编译作用域

父级模板里的所有内容都是在父级作用域中编译的,子模板里的所有内容都是在子作用域中编译的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值