vue入门整理(生命周期、Data、计算属性和侦听器、事件处理、组件)

系列文章目录


前言

vue基础知识整理归纳


一、生命周期

beforeCreate(创建前)
created(创建后)
beforeMount(挂载前)
mounted(挂载后)
beforeUpdate(更新前)
updated(更新后)
beforeDestory(销毁前)
destoryed(销毁后)

vue第一次页面加载会触发beforeCreate(创建前)、creates(创建后)、beforeMount(挂载前)、mounted(挂载后)四个钩子函数。
DOM渲染在mounted这个周期已经渲染完成

vue3与vue2生命周期比较

beforeDestory改名为beforeUnmount
destoryed改名为unmount

同时,vue3提供了composition形式的生命周期钩子,与vue2的对比关系如下:
beforeMount====>onBeforeMount
mounted====>onMounted
beforeUpdate====>onBeforeUpdate
updated====>onUpdated
beforeUnmount====> onBeforeUnmount
unmounted====>onUnmounted
errorCaptured====>onErrorCaptured
renderTracked====>onRenderTracked
renderTriggered====>onRenderTriggered
activated====>onActivated
deactivated====>onDeactivated

二、Data

组件的data选项是一个函数,Vue会在创建新组建实例的过程中调用此函数。它应该返回一个对象,然后Vue会通过相应性系统将其包裹起来,并以$date的形式存储在组件实例中。为方便起见,该对象的任何顶级property也会直接通过组件实例暴露出来。

三、计算属性和侦听器

计算属性(computed)是监听多个属性对一个属性的影响
侦听器(watch)是侦听一个属性变化

四、事件处理

监听事件

v-on(@)监听DOM事件

事件修饰符

vue为v-on提供了事件修饰符来处理DOM事件细节,如:
event.preventDefault()或
event.stopPropagation()

vue通过.表示的指令后缀来调用修饰符
.stop - 阻止冒泡
.prevent - 阻止默认事件
.capture - 阻止捕获
.selt - 只监听触发该元素的事件
.once - 只触发一次
.left - 左键事件
.right - 右键事件
.middle - 中间滚轮事件

按键修饰符

vue允许为v-on在监听键盘事件时添加按键修饰符:
@keyup.13 - 只有在keyCode是13时调用函数
记住所有的keyCode比较困难,所以vue为常用的按钮提供了别名
@keyup.enter 键值为13的别名为enter。效果同上

.enter
.tab
.delete(捕获删除和退格键)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta

五、vue组件

1.全局注册

注册一个全局组件语法如下:

Vue.component(tagName, options)
<tagName></tagName>   // 引用

2.局部注册

在components文件中自定义vue组件,,然后引入

3.组件通信方式

1).props(父向子)、$emit(子向父)

2)eventBus事件总线($emit、$on)

eventBus事件总线适用于父子组件、非父子组件之间的通信
(1)创建事件中心管理组件之间的通信

// event-bus.js

import Vue from 'vue'
export const EventBus = new Vue()

(2)发送事件,例如有兄弟组件firstCom和secondCom
firstCom中:

import EventBus from '.event-bus.js'
export default{
	data(){
		num: 0
	},
	methods: {
		add(){
			EventBus.$emit('addition', {
				num: this.num
			})
		}
	}
}

(3)接收事件
在secondCom组件中接收事件:

import EventBus from '.event-bus.js'
export default{
	data(){
		count: 0
	},
	mounted() {
		EventBus.$on('addition', param => {
			this.count = param.num
		})
	}
}

3)依赖注入(provide / inject)

这种方式适用与父子、祖孙等多层级嵌套,可以避免一层层传递数据
provide和inject是和data、methods同级的,并且provide书写形式和data一样
注意:依赖注入所提供的属性是非相应式的
父组件中:

provide(){
	return {
		num: this.num
	}
}

子组件中:

inject: ['num']

4.插槽(slot)

1)匿名插槽

子组件

// 子组件B
<slot ></slot>

父组件

// 父组件A
<B>验证插槽</B>

2)具名插槽

// 子组件B
<slot name="head"></slot>
<slot></slot>
<slot name="footer"></slot>

父组件

// 父组件A
<B>
	<template v-slot:head>
		<div>具名插槽head内容</div>
	</template>
	<div>匿名插槽内容</div>
	<template v-slot:footer>
		<div>具名插槽footer内容</div>
	</template>
</B>

v-slot:可以用#代替,例如:#head、#footer

3)作用域插槽

提供父组件直接调用子组件数据的途径
子组件

//B组件
<slot :obj="obj"></slot>

父组件

// A组件
<template slot-scope="data">
	{{data.obj}}
</template>
//v-slot指令自Vue2.6.0引入,可以更好的支持slot和slot-scoped的attribute的api替代方案。自vue3后只支持v-slot
<template v-slot="data">
	{{data.obj}}
</template>
Vue过滤器和计算属性Vue.js中的两个核心选项。过滤器用于对数据进行格式化或处理,计算属性用于根据已有的数据计算出新的数据。 过滤器可以在模板中使用,通过管道符(|)将数据传递给过滤器函数进行处理。过滤器可以是局部过滤器或全局过滤器。局部过滤器定义在组件中的filters选项中,而全局过滤器可以在任何地方使用。过滤器函数接收一个参数,即要处理的数据,然后返回处理后的结果。过滤器函数必须有返回值,以便在模板中使用过滤器时获取到结果。\[2\]例如,可以定义一个名为upper的过滤器,将传入的字符串转换为大写字母。 计算属性是在Vue实例中定义的属性,它根据已有的数据计算出新的数据。计算属性可以在模板中使用,通过在模板中使用计算属性的名称来获取计算后的值。计算属性的值会被缓存,只有在依赖的数据发生变化时才会重新计算。计算属性可以包含一个getter函数和一个setter函数,用于获取和设置计算属性的值。\[1\]例如,可以定义一个名为fullName的计算属性,根据firstName和lastName的值计算出完整的姓名。 总结起来,过滤器用于对数据进行格式化或处理,而计算属性用于根据已有的数据计算出新的数据。它们都可以在模板中使用,但过滤器是对数据进行处理,而计算属性是根据已有的数据计算出新的数据。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Vue 基础语法之计算属性(computed)、侦听器(watch)、过滤器(filters)](https://blog.csdn.net/p445098355/article/details/121596111)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vue过滤器、计算属性以及生命周期](https://blog.csdn.net/sj1255897381/article/details/107400254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值