动态 添加 watch
可以使用
this.$watch('xxx',()=>{})
那么如何 动态添加 computed
呢?
补充下场景,数据都是后端获取的
动态 添加 watch
可以使用
this.$watch('xxx',()=>{})
那么如何 动态添加 computed
呢?
补充下场景,数据都是后端获取的
我假设你的数据结构是这样的:
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}))
}
注:只表达思路,具体场景具体分析
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
与评论里同疑问。如果你要动态添加computed,那实际上还是通过watch去赋值data,实际上Vue对computed的处理也是这样的,你可以看看vue里对于
initComputed
的处理,同样是new一个watcher