Vue3自定义指令、动画、模态框、动态组件缓存

233 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情juejin.cn/post/714765…

最近一直再学习Vue3和Vue2的区别。很多vue3的功能和vue2都基本差不多,只是一些小点需要注意。但是学习的太多了,很难背下来了。 今天上午学习了半天,总结了一些自己学习到的知识,还有部分代码。

  • 选项式api是只能在当前这个组件里,别的组件用不了,得传值
  • 组合式api(组合式函数)里面都是js的写法了。可以以模块化的方式进行引入。它是可以实现复用的。

自定义指令

自定义指令作用

主要是对DOM的操作进行封装。更关注DOM的操作。而组合式函数(组合式Api)关注的是js数据的操作。

  • 自定义指令里的钩子函数Vue2和Vue3是不一样的。Vue3里的自定义指令钩子函数和Vue3组件生命周期是一致的了。钩子函数也是可选的。
  • 每个钩子函数里的参数依然是el,binding,vnode,prevNode。 如果自定义指令指向用在mounted或者update中,可以进行简写。

全局简写

import {createApp} from "vue"
import App from "./App"
let app = createApp(App)
app.directive('color',()=>{
   想在mounted和update钩子函数中做什么就在这里写就可以了
})
app.mount('#app')

<Transition>动画

实现原理:和Vue2是一样的。先看有没有css动画,再去看是否有js钩子函数动画,如果都没有直接进行切换。多使用css动画。如果使用了js钩子动画,可以给组件添加:css="false",这样的话在渲染时不会再看是否有css动画。

应用的地方:

  • 由 v-if 所触发的切换
  • 由 v-show 所触发的切换
  • 由特殊元素 <component> 切换的动态组件
  • 六个类名只有v-enter被改为了v-enter-from,其他的还是一样的。

<TransitionGroup>组件

应用场景:用在v-for中

  1. 如果想给一个组件传一个组件,就利用插槽传
  2. appear属性:给动画组件添加该属性,组件初次渲染时就会有动画效果。
  3. 总体来说vue2和vue3的动画效果没有太大差别,vue2动画有的属性vue3里都适用。

<KeepAlive>组件

和在vue2中用法相同,都会涉及两个钩子函数(activeddeactived)。只不过Vue2中组件名用的是<keep-alive>

<Teleport>模态框

应用场景:当我们想点击某个按钮,在页面上弹出一个覆盖整个页面的提示框,可使用该组件。

具体使用方法:先用v-if把要弹出的提示框进行渲染。同时设置最外层元素的样式。利用position:fixed;v-if所在的根元素用<Teleport>组件包裹起来,给该组件添加to属性,值可以是某个标记的名字,例如to="body",那么整个v-if所在的根元素会相对于body进行定位;值也可以设置成类名。

1.png