美文网首页
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 添加对象属性 视图不更新

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