zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    写在寒假
    Docker安装Redis(两种方式)
    JVM类加载机制
    RabbitMQ学习
    MySQL索引详解
    Java内存区域
    Window10下的Docker Desktop安装(保姆级教程)
    JVM垃圾回收
    力扣Hot100(目前进度89/100)
    C# 发送邮件实例
  • 原文地址:https://www.cnblogs.com/theblogs/p/12127933.html
Copyright © 2011-2022 走看看