美文网首页
Vuex 添加对象属性 视图不更新

Vuex 添加对象属性 视图不更新

作者: liuzihe | 来源:发表于2017-05-28 02:35 被阅读0次

问题

在给Vuex的对象添加属性时,申请computed的组件,对应的视图不会更新。

原因

因为Vuex只会跟踪所有在对象创建时就存在的属性。

之所以这样,是因为Vue监测数据的更新,是通过重写数据的set函数,在有写入数据的时候,通知所有订阅者数据更新。而为对象添加属性并不会触发set函数。

解决办法

可以创建一个新的对象,把原来对象的属性,和要添加的属性加到新的对象里。


let someObject = Object.assign({}, someObject, {newField: value})

Object.assign

这里用到了Object.assign()函数,Object.assign()可以快速的把多个对象的属性拷贝到第一个参数的对象中。

需要注意的是:

  • 这种拷贝只是浅拷贝
  • 在取出数据的时候调用getter,存到target上时候调用setter
  • 如果后边的参数对象的属性名称和前边参数对象的属性名称相同,前边的值会被覆盖掉。

相关文章

  • Vuex 添加对象属性 视图不更新

    问题 在给Vuex的对象添加属性时,申请computed的组件,对应的视图不会更新。 原因 因为Vuex只会跟踪所...

  • vue 视图不渲染问题总结

    vuex书写不规范导致组件视图不更新?在vuex中初始化一个对象,实际的值是嵌套对象,给vuex赋值是直接用obj...

  • Vue.set()触发视图更新

    向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因...

  • Vue.js入门(四):常用API

    1 数据类API Vue.set 向响应式对象中添加一个 属性,并确保这个新 属性 同样是响应式的,且触发视图更新...

  • vue this.$set 给data对象新增属性,并触发视图更

    往响应式对象this.$data中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式...

  • vue改变数据视图刷新问题

    视图不更新有几个原因: 1、根属性不存在,而想要直接给根属性赋值导致的视图不更新。此时初始化属性的时候给根属性初始...

  • vue项目中碰到的问题

    vue项目中碰到的问题 路由懒加载写法: Vue 数组/对象更新 视图不更新深拷贝对象或者数组,视图会进行更新对象...

  • vue.js 中 $set 使用场景、解决方案比较、原理

    使用场景: 实例创建之后添加新的属性到实例上,它不会触发视图更新。 由于 JavaScript 的限制,Vue 不...

  • 5、UIView及CALayer

    UIView 创建View的步骤 创建视图对象 设置frame及相关属性 将创建的View添加到父视图 常用Vie...

  • 项目问题

    问题:在已定义好的对象上动态添加属性,数据发生变化,但视图页面未更新显示原因:Vue 不允许在已经创建的实例上动态...

网友评论

      本文标题:Vuex 添加对象属性 视图不更新

      本文链接:https://www.haomeiwen.com/subject/xkucfxtx.html