vue3-基础知识(5)- 复用
admin
2024-01-30 08:31:12

组合式函数

公式:ref+解构

  1. 利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。
  2. 有状态逻辑负责管理会随时间而变化的状态
  3. 可以嵌套多个组合式函数
  4. 参数静态化及ref响应式
  5. 命名:组合式函数约定用驼峰命名法命名,并以“use”作为开头
  6. 函数参数问题:使用unref
  • 若是ref则返回value,否则返回原始值。等价于解构ref。
  • 一般用于函数的参数不确定是ref还是普通值时,提供兼容性。
  • 如果你的组合式函数在接收 ref 为参数时会产生响应式 effect,请确保使用 watch() 显式地监听此 ref,或者在 watchEffect() 中调用 unref() 来进行正确的追踪.
  1. 函数返回值问题:使用ref
  • 返回一个包含多个 ref 的普通的非响应式对象
  • ref解构后可保持响应式
  • 不推荐使用reactive,解构后会丢失属性链接
  • 使用对象形态时,可将useVue使用reactive包装。eg: const obj = reactive(useObj)。解构后obj.prop执行propRef
  1. 注意生命周期挂载时机和卸载时清理副作用
  2. 同步使用
  3. 多个useVue可视为组件间服务(概念)
  4. 解决mixin中的问题:
  • 数据来源,解构清晰来源
  • 命名冲突,解构后可重新赋值
  • mixin组合间需要依赖共同参数互相作用,依赖不清晰。使用组合式函数互相传参明确参数需求及函数间组合作用。
  1. 对比无渲染组件,无额外开销,性能更好。
  • 纯逻辑复用时使用组合式函数
  • 在需要同时复用逻辑和视图布局时使用无渲染组件

指令

  1. 自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑
  2. 一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数
  3. 只有当所需功能只能通过直接的 DOM 操作来实现时,才应该使用自定义指令。其他情况下应该尽可能地使用 v-bind 这样的内置指令来声明式地使用模板,这样更高效,也对服务端渲染更友好。
  4. 指令钩子
const myDirective = {// 在绑定元素的 attribute 前// 或事件监听器应用前调用created(el, binding, vnode, prevVnode) {// 下面会介绍各个参数的细节},// 在元素被插入到 DOM 前调用beforeMount(el, binding, vnode, prevVnode) {},// 在绑定元素的父组件// 及他自己的所有子节点都挂载完成后调用mounted(el, binding, vnode, prevVnode) {},// 绑定元素的父组件更新前调用beforeUpdate(el, binding, vnode, prevVnode) {},// 在绑定元素的父组件// 及他自己的所有子节点都更新后调用updated(el, binding, vnode, prevVnode) {},// 绑定元素的父组件卸载前调用beforeUnmount(el, binding, vnode, prevVnode) {},// 绑定元素的父组件卸载后调用unmounted(el, binding, vnode, prevVnode) {}
}
  1. 除了 el 外,其他参数都是只读的,不要更改它们。
  2. 若你需要在不同的钩子间共享信息,推荐通过元素的 dataset attribute 实现。
  3. 一个很常见的情况是仅仅需要在 mounted 和 updated 上实现相同的行为,除此之外并不需要其他钩子。即只是同个某个指令来操作dom样式。
  4. 当在组件上使用自定义指令时,它会始终应用于组件的根节点,和透传 attributes 类似。
  5. 不推荐在组件上使用自定义指令

插件

(略)

相关内容

热门资讯

把音乐厅搬进喀斯特溶洞是什么体...   近日,一场融合多元艺术形式的洞穴音乐会在贵州省修文县举行,五百余名观众在喀斯特溶洞之中,感受了一...
教师专享福利!北京这些景区免票... 新京报讯 据首都教育消息,教师节将至,北京多家景区为老师们准备了专属免票福利!这份优惠合集已整理好,...
黑茶,喝的是一种境界与健康 在专门用来喝黑茶的茶具“飘逸杯”里,黑茶茶汤看起来并不像“黑茶”这个名字那样黑黢黢的一团。 玻璃器皿...
上海旅游节大巡游花车阵容抢先看... 2026上海旅游节大巡游9月12日外滩启幕,21辆全新主题花车携手21支境内外表演方队联袂登场,邀你...
原创 8... 上周门诊来了位 62 岁的张阿姨,得糖尿病快五年了,平时管嘴特别严,糖果、点心、甜饮料一概不碰,连水...