data
组件选项声明不再接收纯 JavaScript object
,而需要 function
声明。
当合并来自 mixin 或 extend 的多个 data
返回值时,现在是浅层次合并的而不是深层次合并的(只合并根级属性)。
在 2.x 中,开发者可以定义 data
选项是 object
或者是 function
。
例如:
<!-- Object 声明 -->
<script>
const app = new Vue({
data: {
apiKey: "a1b2c3"
}
})
</script>
<!-- Function 声明 -->
<script>
const app = new Vue({
data() {
return {
apiKey: "a1b2c3"
}
}
})
</script>
虽然这对于具有共享状态的根实例提供了一些便利,但是由于只有在根实例上才有可能,这导致了混乱。
在 3.x,data
选项已标准化为只接受返回 object
的 function
。
使用上面的示例,代码只有一个可能的实现:
<script>
import { createApp } from "vue"
createApp({
data() {
return {
apiKey: "a1b2c3"
}
}
}).mount("#app")
</script>
此外,当来自组件的 data()
及其 mixin 或 extends 基类被合并时,现在将浅层次执行合并:
const Mixin = {
data() {
return {
user: {
name: "Jack",
id: 1
}
}
}
}
const CompA = {
mixins: [Mixin],
data() {
return {
user: {
id: 2
}
}
}
}
在 Vue 2.x中,生成的 $data
是:
{
user: {
id: 2,
name: "Jack"
}
}
在 3.0 中,其结果将会是:
{
user: {
id: 2
}
}
对于依赖对象声明的用户,我们建议:
data
中的 property对于依赖 mixin 的深度合并行为的用户,我们建议重构代码以完全避免这种依赖,因为 mixin 的深度合并非常隐式,这让代码逻辑更难理解和调试。
呼声非常高的编辑器相关的需求就是 Tab 的支持了。VS Code 虽然一直以来技术上是支持 Tab 的,但是并不会显示出来,而是要求你按...
介绍两个比较实用的功能:取色器 Color Picker和CSS 选择器的预览。取色器 Color Picker首先,你可以在书写 HTML 和 CSS 时使用...
为了检验LNMP动态网站环境是否配置妥当,可以使用在上面部署Discuz!系统,然后查看结果。如果能够在LNMP动态网站环境中成功安装...
core 模块Nginx 的启动模块启动模块从启动 Nginx 进程开始,做了一系列的初始化工作,源代码位于src/core/nginx.c,从 main 函数...
在名字空间级别应用Pod安全标准Note本教程仅适用于新集群。Pod安全准入(PSA)在v1.23及更高版本默认启用,因为它升级到测试版(...
任何一个大型的应用程序和服务,都必须会使用到高性能的数据存储解决方案,用来准确(ACID,原子性Atomicity、一致性Consistency...
第十四章 Android组件详解到目前为止,我们已经一同学习了Android应用程序中的结构与典型元素,其中包括用户界面元素以及数据存...