vue2 和 vue3的区别
- vue3 的
template支持多个跟标签,vue2 不支持 - vue3 有
createApp(组件),vue2 为new Vue({template,render}) 使用
v-modal代替之前的v-modal和.sync<Switch :value="y" @update:value="y = $event"/>//可以简化为<Switch v-model:value="y"/>
新增
context.emit,与this.$emit作用相同export default{props:{value:Boolean,},setup(props,context){const fn = ()=>{context.emit("update:value",!props.value) //使用emit传出对父组件value值的修改结果,外部监听到修改后,改变结果,并重新传到子组件}}}
Vue3 属性绑定
- 使用
inheritAttrs:false可以取消默认绑定(外部传进的函数等,会默认绑定到组件最外层的元素上) - 使用
$attrs或者context.attrs获取所有属性 - 使用
v-bind="$attrs"可以批量绑定属性
Vue3 具名插槽
//传送<template v-slot:title><strong>标题内容</strong></template>//引用 name与上面v-slot后面相对应<slot name='title'/>
获取插槽中的内容
<temeplate><Tabs><Tab title="导航1">tab1</Tab><Tab title="导航2">tab2</Tab></Tabs></temeplate>//在Tabs组件中获取到包含的内容const eles = context.slots.default() //数组内含有其内的元素
Teleport 标签
可以将包含的内容挂载到某个html节点下
//将div挂载到 body 下<Teleport to="body"><div>123</div></Teleport>
