Vue学习笔记(15)-Vue脚手架(2)-ref属性,props配置以及混合(mixin)
1.Vue脚手架中的ref属性
作用:
- 被用来给元素或子组件注册引用信息(id的替代者)
- 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
- 使用方式:
- 1. 打标识:
<h1 ref="xxx">.....</h1>
或<School ref="xxx"></School>
- 2. 获取:
this.$refs.xxx
代码展示:
<template> |
结果展示:
2.props配置
- 利用props配置项由 父组件 向 子组件 传值操作,实现数据的动态绑定,提高组件的代码复用性,步骤如下:
- (1)在父组件中使用子组件的标签里面通过属性绑定向子组件传值,如下代码:
- 这里展示App中的数据中传递:
<template>
<div>
<!-- 这里配置接收的键名和键值,使用v-bind:(:)实现数据的动态绑定(数值类型) -->
<Student name="李四" sex="女" :age="18"/>
</div>
</template>
<script>
// 引入子组件
import Student from './components/Student'
export default {
name:'App',
components:{Student}
}
</script>
- 这里展示App中的数据中传递:
- (2)子组件通过props配置项接收,如下代码:
- 这里展示Student中的数据中接收:(三种接收方法)
<template>
<div>
<h1>{{msg}}</h1>
<h2>学生姓名:{{name}}</h2>
<h2>学生性别:{{sex}}</h2>
<!-- 这里使用data中嵌套props中的属性实现间接修改props属性 -->
<h2>学生年龄:{{myAge+1}}</h2>
<button @click="updateAge">尝试修改收到的年龄(点击+1)</button>
</div>
</template>
<script>
export default {
name:'Student',
data() {
console.log(this)
return {
msg:'你好!! Vue!',
// 这里设置一个变量用于接收props中的属性
myAge:this.age
}
},
methods: {
updateAge(){
this.myAge++
}
},
//1.简单声明接收(只接受值)
// props:['name','age','sex']
//2.接收的同时对数据进行类型限制(接收值并且限制值的类型)
/* props:{
name:String,
age:Number,
sex:String
} */
//3.接收的同时对数据:进行类型限制+默认值的指定+必要性的限制
// (限制类型、限制必要性、指定默认值)
props:{
name:{
type:String, //name的类型是字符串
required:true, //name是必要的
},
age:{
type:Number,
default:99 //默认值(如果没有传入或者格式错误就显示)
},
sex:{
type:String,
required:true
}
}
}
</script>
- 这里展示Student中的数据中接收:(三种接收方法)
- (1)在父组件中使用子组件的标签里面通过属性绑定向子组件传值,如下代码:
备注:
- props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据。(上述代码有实现过程)
结果展示:
3.混合(mixin)属性
作用:
- 可以把多个组件共用的配置提取成一个混入对象
使用场景:
- 多个组件身上均有相同的方法或者属性(data,methods…)的时候
代码展示:
mixin.js(提取出来)
// 将mixin暴露出去(混入) |
局部引入(在对应的组件身上引入即可)
例子:School组件(归于App管辖下的子组件)
<!-- School组件(局部引入mixin[混入]) --> |
例子:Student组件(归于App管辖下的子组件)
<!-- Student组件(局部引入mixin[混入]) --> |
全局引入:(main.js)
// 在main.js中全局引入mixin(混入) |
结果展示:(这里就展示全局引入的结果)
局部引入的话就只是在当前组件身上有,但是在其他组件身上就没有
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库