vue(九)vue3新特性
-
性能比Vue2强
-
可以将无用模块去掉,仅打包需要的
-
组合API
-
碎片(fragment),portal传送门(teleport),悬念(suspense)
-
更好的TS支持
-
暴露了自定义渲染API
setup()
-
在setup函数中声明对象,代替data()。ref声明简单对象,reactive
<template> <h3>{{ s1 }}</h3> <h3>{{ person.id }}</h3> </template> <script> import {ref,reactive} from "vue" export default { name: "App", setup(){ const s1=ref("s1111") const person=reactive({ id:1, name:"perter" }) return{ s1,person } } }
export default { name: "App", setup(){ function clickHandler() { console.log(111); } return{ clickHandler } } }
props代替vue2的props,具有同样的组件交互功能
setup(props,ctx){
}
-
-
渲染时:beforeMount、mounted(网络请求一般放在mounted中),调用改为 OnBeforeMount, OnMounted
-
更新时:beforeUpdate、updated,调用改为 OnBeforeUpdate, OnUpdated
-
卸载时:beforeUnmount(卸载之前,把消耗性能的处理都删掉)、unmounted,调用改为 OnBeforeUnmount, OnUnmounted
-
setup(){ OnMounted( ()=>{console.log("...")} ) }
provide()
和 inject()
可以实现嵌套组件之间的数据传递(上级向下级传递),不限制层级(跳过中间子组件)
父组件使用provide()向下传递数据,子组件使用 inject()获取上层传递过来的数据
// 父组件传递 setup(){ provide("msg","this is msg1") } // 子组件获取 setup(){ const msg=inject("msg") return{ msg } }