Skip to content

在 Vue.js 2 中使用冻结对象提升效率

Published:

前言

假设组件需要处理并渲染100万条数据(这是一个极端情况)。当你点击按钮发送请求后,页面可能会突然卡顿一段时间。如果你使用性能分析工具查看,会发现最耗费时间的不是渲染本身,而是 Vue.js 在遍历每一条数据时,将普通对象转换为响应式对象所造成的开销。

![](/Users/sora/Library/Application Support/typora-user-images/image-20240827223830253.png)

为什么使用冻结

解决方案

<script>
export default {
  data() {
    return {
      items: []
    }
  }.
  methods: {
  	loadItems() {
      ...
      this.items = Object.freeze(response...)
    }
	}
}
</script>