基本概念
-
阻止修改现有的属性,也意味着响应系统无法再追踪变化。
-
Object.freeze() 方法可以冻结一个对象,不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。该方法返回被冻结的对象。
-
freeze冻结了的对象,vue不会做getter和setter的转换。
案例
<body>
<div id="app">
<ul>
<li v-for="(item, index) in list" :key="item.name">
{{item.name}}
</li>
</ul>
<button @click="add">add</button>
</div>
</body>
<script>
const App = {
data() {
return {
list: Object.freeze([{
name: "wxj0"
},
{
name: "wxj1"
}
])
}
},
methods: {
dataChange() { // 事件能触发单data中的数据不会被修改
console.log(this.list.name);
},
add() {
// 不能修改,会报错
this.list.push({
name: "new456" + Date.now()
})
},
}
}
const app = Vue.createApp(App)
app.mount('#app')
</script>