修改数组中的变量,无法立马触发视图更新(三种解决方案)
第一:使用$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函数没有自动更新,需手动强制刷新。
转载于:https://www.cnblogs.com/carryxin/p/10030340.html
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 如何在Mac中的文件选择框中打开系统隐藏文件夹