vue 如何动态添加 computed?

动态 添加 watch 可以使用

this.$watch('xxx',()=>{})

那么如何 动态添加 computed 呢?

补充下场景,数据都是后端获取的
image.png

阅读 4k
2 个回答

与评论里同疑问。如果你要动态添加computed,那实际上还是通过watch去赋值data,实际上Vue对computed的处理也是这样的,你可以看看vue里对于initComputed的处理,同样是new一个watcher

我假设你的数据结构是这样的:

type Row = {
    optionA: boolean,
    optionB: boolean,
    optionC: boolean
}

const data: Row[] = [/* ... */]

然后希望在Row里多一个属性,用于表达optionA-optionC的是否全选
所以这种情况比较好的就是将Row下放到子组件里,子组件基于props直接computed比较快乐
如果没有子组件,那只能将整个data都computed了。类似:

computed() {
    return this.data.map(row => ({...row,optionAll: row.optionA && row.optionB && row.optionC}))
}

注:只表达思路,具体场景具体分析

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题