0
点赞
收藏
分享

微信扫一扫

vue-03

cnlinkchina 2022-01-20 阅读 87

组件的生命周期

生命周期&生命周期函数

生命周期(Life Cycle)是指一个组件从创建 -> 运行 -> 销毁的整个阶段,强调的是一个时间段。

生命周期函数:是由 vue 框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行。

注意:生命周期强调的是时间段,生命周期函数强调的是时间点。

组件生命周期函数的分类

  • 组件创建阶段
  • 组件运行阶段
  • 组件销毁阶段

生命周期图示

Vue 生命周期图示(vuejs.org)

组件之间的数据共享

组件之间的关系

在项目中,组件之间的最常见的关系为:

  1. 父子关系
  2. 兄弟关系

父子组件之间的数据共享

父子组件之间的数据共享分为:

  1. 父 -> 子共享数据
  2. 子 -> 父共享数据

父组件向子组件共享数据

父组件向子组件共享数据需要使用自定义属性。

//父组件
<Son :msg="message" :user="userinfo"></Son>
data(){
	return{
		message:'hello vue.js',
		userinfo:{name:'zs',age:20}
	}
}

<tempalte>
	<div>
        <h5>Son组件</h5>
        <p>父组件传递过来的msg值是:{{ msg }}</p>
        <p>父组件传递过来的user值是:{{ user }}</p>
    </div>
</tempalte>
props:['msg','user']

子组件向父组件共享数据

子组件向父组件共享数据使用自定义事件。

//子组件
export fault{
	data(){
		return {count:0}
	},
	methods:{
		add(){
			this.count+=1
			//修改数据时,通过$emit()触发自定义事件
			this.$emit('numchange',this.count)
		}
	}
}
//父组件
<Son @numchange='getNewCount'></Son>
export fault{
	data(){
		return {
			countFromSon:0
		}
	},
	methods:{
		getNewCount(val){
			this.countFromSon=val
		}
	}
}

兄弟组件之间的数据共享

在 vue2.x 中,兄弟组件之间数据共享的方案是 EventBus。

在这里插入图片描述

EventBus 的使用步骤

  1. 创建 eventBus.js 模块,并向外共享一个 Vue 的实例对象

  2. 在数据发送方,调用 bus.$emit(‘事件名称’, 要发送的数据) 方法触发自定义事件

  3. 在数据接收方,调用 bus.$on(‘事件名称’, 事件处理函数) 方法注册一个自定义事件

ref引用

ref引用介绍

ref 用来辅助开发者在不依赖于 jQuery 的情况下,获取 DOM 元素或组件的引用。 每个 vue 的组件实例上,都包含一个 $refs 对象,里面存储着对应的 DOM 元素或组件的引用。默认情况下, 组件的 $refs 指向一个空对象。

<tempalte>
	<div>
        <h3>MyRef 组件</h3>
        <button @click="getRef">获取 $refs引用</button>
    </div>
</tempalte>
<script>
export default{
	methods:{
		getRef(){console.log(this)}//this 是当前组件的实例对象,this.$refs 默认指向空对象
	}
}
</script>

使用ref引用DOM元素

如果想要使用 ref 引用页面上的 DOM 元素,则可以按照如下的方式进行操作:

在这里插入图片描述

使用ref引用组件实例

如果想要使用 ref 引用页面上的组件实例,则可以按照如下的方式进行操作:

在这里插入图片描述

控制文本框和按钮的按需切换

通过布尔值 inputVisible 来控制组件中的文本框与按钮的按需切换。

在这里插入图片描述

让文本框自动获得焦点

当文本框展示出来之后,如果希望它立即获得焦点,则可以为其添加 ref 引用,并调用原生 DOM 对象的 .focus() 方法即可。

在这里插入图片描述

this.$nextTick(cb) 方

组件的 $nextTick(cb) 方法,会把 cb 回调推迟到下一个 DOM 更新周期之后执行。通俗的理解是:等组件的 DOM 更新完成之后,再执行 cb 回调函数。从而能保证 cb 回调函数可以操作到最新的 DOM 元素。

在这里插入图片描述

举报

相关推荐

Vue-03

vue03

Vue day 03

Vue03-HelloWord

Vue主要使用-03

Vue基础Day03

0 条评论