为什么要使用 computed 来计算新的数据?
来源:4-6 ColumnList 组件使用 Bootstrap 美化
 
			崔顺彪
2021-05-08
如果不使用 computed 也是可以实现 columnList 数组。
setup (props) {
  const columnList = props.list.map(column => {
    if (!column.avatar) {
      column.avatar = require('@/assets/logo.png')
    }
    return column
  })
  return {
    columnList
  }
}
没有 computed 的方式。
setup (props) {
  const columnList = computed(() => {
    return props.list.map(column => {
      if (!column.avatar) {
        column.avatar = require('@/assets/logo.png')
      }
      return column
    })
  })
  return {
    columnList
  }
}
不知道加不加 computed 细节上有什么区别么?因为我记得 props.list 这个也是响应式的,父级数据变化了,里面数据也会变化。如果没有 computed 的话,外层数据变了,里面的 columnList 并不能重新计算,对吧?
对的,我自己写了 setTimeout 又改了下父级数据,是这样的。
但如果不重新处理「默认图片」的话,直接使用 props 传入的值 list 的话,父级改变了,数据也就跟着改变了。
所以,这块用 computed 主要是为了解决「父级数据改变了,columnList 重新计算默认图片」这个逻辑。
写回答
	1回答
- 
				  张轩 2021-05-09 同学 你总结的没错 假如不用 computed 父级数据更新以后子组件中是不会更新的 ,特别注意 setup 是只执行一次的,任何想要有响应式变化的数据都要用 computed 进行包裹 10
相似问题
