VUE3.x 动画和高级语法

96 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 23 天,点击查看活动详情

VUE3.x 动画和高级语法

Mixin 混入

  • 优先级

    • 数据和方法:组件 data ,methods 优先级高于 mixin data,methods 优先级
    • 生命周期:生命周期函数,先执行 mixin 里面的,再执行组件里的
    • 自定义的属性,组件中的属性优先级高于 mixin 属性的优先级
  • 局部 Mixin

    • mixins:[myMixin] , myMixin 是一个自定义组件
  • 全局 Mixin app.mixin()

PS:Vue3 中尽量避免使用 Mixin,因为可以使用 CompositionAPI 来代替,可维护性更高。

directive 自定义指令

  • 全局自定义指令
    • 定义方法:app.directive('focus',{mounted(el){el.focus()}})
    • 使用方法:<input v-focus />
  • 局部自定义指令
    • 局部指令需要在父组件注册后才可以使用
  • 生命周期函数
    • directive 也是由生命周期的,所以声明周期函数同样起作用。
    • 生命周期函数接受两个参数绑定形式:v-pos:abc="hello"
    • el:DOM 元素
    • binding: 传递的属性值
    • 获取 hello 方法:binding.value
    • 获取 abc 方法:binding.tag

Teleport 传送门

  • 通过传送门,可以把 VUE 里的标签,直接传送到 VUE 应用之外的顶层标签里去。比如直接传送到标签之下。
  • 基本语法:<teleport to="body">......</teleport>

Plugin-插件

  • plugin 插件,目的是把通用性的功能封装起来。
  • 创建插件固定语法: const myPlugin = { install(app , options){}}
  • app:整个 Vue 的实例,里边有很多东西,options 是传递内容
  • 使用插件写法:app.use(myPlugin,{name:'hello'})
    • myPlugin:插件名字
    • {name:'hello'} : 传递的参数

父子通信 props

和 vue2 一样通过 props 和 emit 进行父子通信,写法上略有差别

<script setup>
// 父传子
defineProps({
	value: {
		type: Number,
		default: 1
	}
})
// 子传父
const emit = defineEmits(['change', 'setValue'])
// 模板绑定的监听函数
function changeValue(val) {
	emit('change', val)
}
function changeSet(val) {
	emit('setValue', val)
}
</script>

父组件的使用方法和 vue2 相同

<child :value="value" @change="change" @setValue="setValue"></child>

计算属性 computed

由于 vue3 中没有 this 指针,因此使用计算属性需要自己自行导入

<script setup>
import { computed } from '@vue/runtime-core'

const value = computed(() => {
	return 1 + 1
})
</script>

watch 监听器

watch 监听器的使用比较简单,并不需要导入,直接使用即可。

<script setup>
// dataSources是被监听的变量
watch(() => dataSources, () => {
	console.log(dataSources)
})
</script>

全局函数/变量注册

// main.js 注册 element-plus 的一个消息提示

import { ElMessage } from 'element-plus'
app.config.globalProperties.$message.success = () => {
ElMessage({
message: "OK",
type: 'success'
})
}

render 函数和 h 函数

使用 render 函数描述虚拟 Dom 时,vue 提供了一个函数,这个函数是构建虚拟 Dom 所需要的工具,叫做 createElement,约定的简写叫 h

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 23 天,点击查看活动详情