又更新了
2019.2月,大年三十,Vue在时隔一段时间后发布了新的版本Vue2.6,版本号是Macross(超时空要塞)
真是,不让人过好年啊。学不动了。
吐槽归吐槽,该学还是得学习。相对来说Vue的文档和教程是最平易近人、最易理解的了,而且尤雨溪还亲自发表文章介绍了Vue2.6的更新情况,更没有不跟进的理由了。
Slots:新语法,性能优化,准备接轨3.0
语法
最重要的更新之一就是对Slots的语法的更新,Slots对于Vue的组件解耦和分发复用有很重要的意义。旧的语法在2.x版本将获得支持,但是在3.0版本后将被废弃。
这次更新引入了v-slot
来代替原来的slot
和slot-scope
语法
有这样一个组件Comp
:
<template>
<div class="slot-inner">
<slot>默认Slot</slot>
<slot name="slot1">具名Slot</slot>
<slot name="slot2" :innerUser="user">Hello {
{user.firstName}}</slot>
</div>
</template>
<script>
export default {
data() {
return {
user: {
firstName: 'jay',
lastName: 'chow'
},
}
}
}
</script>
原来的语法:
<Comp>
<!-- 默认插槽 -->
<p>向默认Slot插入的内容</p>
<!-- 具名插槽 -->
<p slot="slot1">向具名Slot插入的内容</p>
<!-- 作用域插槽 -->
<p slot="slot2" slot-scope="{innerUser}">Hi, {
{innerUser.lastName}}</p>
</Comp>
<!--默认插槽-->
<foo>
<div slot-scope="{ msg }">
{
{ msg }}
</div>
</foo>
<!--命名插槽-->
<foo>
<template slot="one" slot-scope="{ msg }">
text slot: {
{ msg }}
</template>
<div slot="two" slot-scope="{ msg }">
element slot: {
{ msg }}
</div>
</foo>
更新后的语法:
<Comp>
<!-- 默认插槽 -->
<template><p>向默认Slot插入的内容</p></template>
<!-- 具名插槽 -->
<template v-slot:slot1><p>向具名Slot插入的内容</p></template>
<!-- 作用域插槽 -->
<template v-slot:slot2="{innerUser}