javascript - 为什么这个计算属性显示变化(Vue)
问题描述
我正在使用一些按钮更改属性。当我单击按钮时,数据会在 UI 中更新,甚至是. computed1
,但不是console.log("computed1")
. 我认为这是因为我正在更改它的属性而不是整个对象。但是如果没有触发,为什么 UI 会更新?你能给我解释一下吗?我在文档中找不到这样的东西。
代码: https ://jsfiddle.net/1hr7cy5d/
var example1 = new Vue({
el: '#example',
data: function() {
return {
item: {
aaa: 'aaa',
bbb: 'bbb',
ccc: 'ccc'
}
}
},
computed: {
computed1: function() {
console.log("computed1");
let item = this.item
return item;
},
},
methods: {
method1() {
console.log("method1")
this.item.aaa = 'xxxx';
},
method2() {
console.log("method2")
this.item["bbb"] = 'yyyyy';
},
method3() {
console.log("method3")
this.$set(this.item, "ccc", "zzzzz")
},
method4() {},
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="example">
<button @click="method1()">method1</button>
<button @click="method2()">method2</button>
<button @click="method3()">method3</button>
<button @click="method4()">method4</button>
<pre>{{item}}</pre>
<pre>{{computed1}}</pre>
</div>
解决方案
推荐阅读
- go - Go lang“go get”错误“zip file too big”——重新编辑我的问题
- c# - 使用 SemaphoreSlim 进行分批执行
- arrays - 尝试使用 forEach() 从另一个对象数组创建新的对象数组时未定义。打字稿
- android - 将android应用程序转到后台时最小化键盘
- javascript - nuxt.js 中未定义的插件功能
- c++ - 如何使 Tesseract 将单词与标点符号分开?
- emacs - 在单独的窗口中打开 4 个议程(艾森豪威尔矩阵……书籍:高效能人士的七个习惯)
- fluent-bit - Fluentbit Docker 无效解析器
- javascript - 如何检查 IndexedDB 数据库是否存在?
- flutter - flutter_bloc 找不到正确的提供程序