修改数组中的变量,无法立马触发视图更新(三种解决方案)

第一:使用$set.

直接给student赋值操作,虽然可以新增属性,但是不会触发视图更新

mounted () {
this.student.age = 24
}
原因是:受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。因为 Vue.js 在初始化实例时将属性转为 getter/setter,所以属性必须在 data 对象上才能让 Vue.js 转换它,才能让它是响应的。

要处理这种情况,我们可以使用$set()方法,既可以新增属性,又可以触发视图更新。

错误写法:this.$set(key,value)(ps: 可能是vue1.0的写法)

mounted () {
this.$set(this.student.age, 24)
}
正确写法:this.$set(this.data,”key”,value’)

mounted () {
this.$set(this.student,"age",

第二种:用ES6的对象.assign更新对象

Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target )


第三种:用强制刷新$forceUpdate()

添加this.$forceUpdate();进行强制渲染,效果实现。搜索资料得出结果:因为数据层次太多,render函数没有自动更新,需手动强制刷新。

猜你喜欢

转载自www.cnblogs.com/carryxin/p/10030340.html
今日推荐