• vue 解决视图未更新数据的几种方式


    比如给data中的对象添加属性时候,在控制台发现该对象身上已经有了属性,但是视图层并没有更新数据。

    原因是因为受JS限制,vue不能监听对象属性的添加/删除等操作,在vue组件初始化的过程中,会调用getter和setter方法,所以该属性必须是存在data中,视图层才会响应该数据的变化。(也就是说vue实例已经创建了,数据也都挂载在上面了,这个时候在给一个对象增加新的属性是不可以的)

    解决方式大概有两种:

    1、使用vue.$set

    this.$set(obj, key, value)/vue.set(obj, key, value)

    返回值为设置的值

    <script>
    export default {
     data() {
       return {
         place: {
           name: '南锣鼓巷',
         }
       }
     },
     methods: {
       setMessage() {
         this.$set(this.place, 'age', 10)
         console.log(this.place)
       }
     }
    }
    </script>

    2、使用Object.assign(target, sources)方法

    <script>
    export default {
      data() {
        return {
          place: {
            name: '南锣鼓巷',
          }
        }
      },
      methods: {
        setMessage() {
          this.place.age = 15
          this.place = Object.assign({}, this.place)
          console.log(this.place)
        }
      }
    }
    </script>
  • 相关阅读:
    水仙花数
    Edge browser hosts file
    tt0034583
    JavaScript中的面向对象
    滚动
    无缝滚动
    MySQL(一)
    JavaScript 精粹
    MYSQL新手入门篇
    用github来展示你的前端页面吧
  • 原文地址:https://www.cnblogs.com/theblogs/p/12127933.html
Copyright © 2020-2023  润新知