长列表性能优化

vue 会经过 object.defineProperty 对数据进行劫持,来实现视图响应数据的变化,然而有些时候咱们的组件就是纯粹的数据展现,不会有任何改变,咱们就不须要 vue 来劫持咱们的数据,在大量数据展现的状况下,这可以很明显的减小组件初始化的时间。javascript

因此,咱们能够经过 object.freeze 方法来冻结一个对象,这个对象一旦被冻结,vue就不会对数据进行劫持了。vue

export default {
  data: () => ({
    list: []
  }),
  async created() {
    const list = await axios.get('xxxx')
    this.list = Object.freeze(list)
  },
  methods: {
    // 此处作的操做都不能改变list的值
  }
}

这里只是冻结了 list 的值,引用不会被冻结,当咱们须要 reactive 数据的时候,咱们能够从新给 list 赋值。java

相关文章
相关标签/搜索