【发布时间】:2019-05-24 07:20:33
【问题描述】:
我刚刚意识到 Vue.js 在使用计算属性时的一种奇怪行为。也许我错过了一些东西,这是正确的行为,但对我来说这没有意义。如果您查看以下代码,您将在计算属性中看到我创建了一个新变量并分配了一个在“数据”中定义的数组。然后我将一些新数据推送到新创建的变量中。现在“数据”中的数组也发生了变化!这是为什么呢?
new Vue({
el: "#app",
data: {
items: ['foo', 'bar']
},
computed: {
someComputed() {
let some = this.items
some.push('foobar')
return some
}
}
})
<div id="app">
{{ someComputed }} – {{ items }}
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
【问题讨论】:
-
计算中的副作用是一种不好的做法。
-
使用
this.items.slice()时没有副作用真的很好奇为什么我的问题被否决了... -
我没有投票,我只是评论了。
标签: vue.js computed-properties