vue computed计算不到数组或者对象的变化

json 复制代码
form: {
	...
	childQuestionItems:[
		...
		{
			...
			score: 6
		}
	]
}
...
computed: {
	totalScore(){
      	return this.form.childQuestionItems.reduce((sum,e)=> sum + Number(e.score || 0), 0)
    }
}    

想要computed 监听计算form.childQuestionItems改变后所有score的和

但是 computed并不监听。

原因

对象:

向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = 'hi')

数组:

Vue 不能检测以下数组的变动:

当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue

当你修改数组的长度时,例如:vm.items.length = newLength

解决

json 复制代码
Vue.set( target, key, value),
target: 要更改的数据源(可以是对象或者数组)
key: 要更改的具体数据
value: 重新赋的值。
// 或
Array.prototype.splice
splice(start, deleteCount, item1)
js 复制代码
this.$set(this.form.childQuestionItems,this.form.childQuestionItems[questionIndex],form)

另一种方式

添加一个标记属性,当所要监听对象改变后标记属性值+1 ,computed计算标记属性。

相关推荐
百思可瑞教育15 小时前
Vue.config.js中的Webpack配置、优化及多页面应用开发
前端·javascript·vue.js·webpack·uni-app·北京百思教育
患得患失94915 小时前
【前端】【高德地图WebJs】【知识体系搭建】面要素知识点——>多边形,圆形, 矩形,图形编辑器
前端·编辑器·高德地图·amap
歪歪10015 小时前
webpack 配置文件中 mode 有哪些模式?
开发语言·前端·javascript·webpack·前端框架·node.js
歪歪10015 小时前
如何配置Webpack以实现按需加载模块?
开发语言·前端·webpack·node.js
面向星辰18 小时前
html各种常用标签
前端·javascript·html
梦65018 小时前
HTML新属性
前端
东风西巷20 小时前
PDFgear:免费全能的PDF处理工具
前端·pdf·软件需求
森之鸟20 小时前
Mac电脑上如何打印出字体图标
前端·javascript·macos
mCell21 小时前
GSAP 入门指南
前端·javascript·动效
gnip21 小时前
组件循环引用依赖问题处理
前端·javascript