记一次 Vue2 迁移 Vue3 的实践总结

高手们在线求帮请教下,记一次 Vue2 迁移 Vue3 的实践总结
最新回答
你是我的避风港

2024-05-18 11:48:19

文章来源于@Elab团队,https://mp.weixin.qq.com/s/2JyaG705tnhpKvVFQTvhlQ

一、Vue3

Vue3中文文档[1]

2.x 全局 API3.x 实例 API (app) Vue.configapp.config Vue.config.productionTip无 Vue.config.ignoredElementsapp.config.isCustomElement Vue.componentapp.component Vue.directiveapp.directive Vue.mixinapp.mixin Vue.useapp.use Vue.prototypeapp.config.globalProperties

引入此配置选项的目的是支持原生自定义元素,因此重命名可以更好地传达它的功能,新选项还需要一个比旧的 string/RegExp 方法提供更多灵活性的函数:

在Vue 2中,Vue.prototype通常用于添加可在所有组件中访问的属性。

Vue 3中的等效项是config.globalProperties。在实例化应用程序内的组件时,将复制这些属性

2.0生命周期3.0生命周期 beforeCreate(组件创建之前)setup() created(组件创建完成)setup() beforeMount(组件挂载之前)onBeforeMount(组件挂载之前) mounted(组件挂载完成)onMounted(组件挂载完成) beforeUpdate(数据更新,虚拟DOM打补丁之前)onBeforeUpdate(数据更新,虚拟DOM打补丁之前) updated(数据更新,虚拟DOM渲染完成)onUpdated(数据更新,虚拟DOM渲染完成) beforeDestroy(组件销毁之前)onBeforeUnmount(组件销毁之前) destroyed(组件销毁之后)onUnmounted(组件销毁之后) activated(被 keep-alive 缓存的组件激活时调用)onActivated(被激活时执行) deactivated(被 keep-alive 缓存的组件停用时调用)onDeactivated(比如从 A 组件,切换到 B 组件,A 组件消失时执行) errorCaptured(当捕获一个来自子孙组件的错误时被调用)onErrorCaptured(当捕获一个来自子孙组件的异常时激活钩子函数)

注意点:




refreactive 入参基本类型引用类型 返回值响应式且可变的 ref 对象响应式代理(Proxy) 访问方式1.ref 对象拥有一个指向内部值的单一属性 .value
2.在dom和setup()的return中会自动解套
3.ref 作为 reactive 对象的 property 被访问或修改时,也将自动解套直接.访问即可

问题 & 注意点: 因为reactive是组合函数【 对象 】,所以必须始终保持对这个所返回对象的引用以保持响应性,不能解构该对象或者展开

例如:

const { a } = objReactive 或者 return { ...objReactive }

解决方法:

toRefs API

用来提供解决此约束的办法——它将响应式对象的每个 property 都转成了相应的 ref【把对象转成了ref】。

watchEffect 的第一个参数—— effect 函数——自己也有参数:叫 onInvalidate ,也是一个函数,用于清除 effect 产生的副作用。

onInvalidate 被调用的时机很微妙:它只作用于异步函数,并且只有在如下两种情况下才会被调用:

主要作用是指定调度器,即何时运行副作用函数。

优点:很优秀

缺点:他的对手(React),更优秀

虽然好多地方神似React,但是我们也可以从中看出,他们的都源于比较成熟的编程范式——FP(Functional Programming)。

框架只是工具,解决问题才是终极目标;我们还是要把重点放在领悟框架的设计思想上;悟到了,才是真正掌握了解决问题的手段。(抄的)