为什么要使用 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
相似问题