这是我参与更文挑战的第22天,活动详情查看: 更文挑战
不知不觉22天了,每天更文对自己来说真是一个挑战,从被掏空到主动学习
既然我们知道了为什么,我们就可以知道怎么做
尤大说,要看文档,要看文档,要看文档。
setup
文档将setup
、ref
、watch
等都介绍在“组合API”一节,个人对这个目前并没有太理解,等应用有了深刻理解再另写吧!
vue3新增了一个setup
组件选项,在组件创建之前执行,setup
中不可使用 this
,(文档中说“应该避免使用this
”),因为setup
的调用发生在 data
、computed
、 methods
被解析之前,所以它们无法在 setup
中被获取。
export default {
components: { ... },
props: {
user: {
type: String,
required: true
}
},
setup(props) {
console.log(props) // { user: '' }
return {} // 这里返回的任何内容都可以用于组件的其余部分
}
// 组件的“其余部分”
}
复制代码
ref
ref: 响应式变量。如下所示,如此可使得变量counter
变为一个在任何地方起作用的响应式变量。
import { ref } from 'vue'
const counter = ref(0)
console.log(counter) // { value: 0 }
复制代码
将值封装在一个对象中的理由,文档中给了一个很生动的Gif动画,非常有意思。
全局/外部watch
函数
不知道算不算vue3的新特性,不过我之前没有使用过这一函数,姑且罗列出来。
import { ref, watch } from 'vue'
const counter = ref(0)
watch(counter, (newValue, oldValue) => {
console.log('The new counter value is: ' + counter.value)
})
// 监听counter,当counter发生修改时,执行回调函数。
复制代码
全局/外部computed
属性
用户类似与组件内的computed。
import { ref, computed } from 'vue'
const counter = ref(0)
const twiceTheCounter = computed(() => counter.value * 2)
复制代码
Teleport
经过文档阅读,我的理解是Teleport允许给组件的部分DOM指定父组件,比如将组件的一部分渲染至页面的html/body下。
<teleport to="body">
<div v-if="modalOpen" class="modal">
<div>
I'm a teleported modal!
(My parent is "body")
<button @click="modalOpen = false">
Close
</button>
</div>
</div>
</teleport>
复制代码
片段
简单来说,组件中的<template><div>..</div></template>
,其中<div></div>
可以不写了。
自定义事件
允许给emit
事件编写验证函数。文档地址
总结
现在上线的生产环境系统略复杂,vue3没有太值得升级的特性,暂且不动,仍用Vue2.
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END