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>