vue 基础 API

95 阅读2分钟

vue 基础_API

v-for 中 key 的作用

重绘和回流

  • 重绘

    • 页面上元素的颜色、透明度等信息改变时会触发重绘
  • 回流

    • 页面上元素的大小、为止等信息改变时会触发回流
  • 结论

    • 回流一定会触发重绘,重绘不一定会触发回流

虚拟 DOM

  • 是什么?

    • 记录了关键 DOM 节点信息的 JS 对象
  • 为什么要用虚拟 DOM?

    • 真实 DOM 一旦修改立即会触发页面重绘或回流
    • 真实 DOM 太大,遍历属性更耗时
  • 怎么用(diff 算法对比规则)?

    • 当数据更新时,将新旧 DOM 树,逐层对比,有 Key 就对比 Key,无 Key 就地更新

无 Key

  • 就地更新策略

    • 尽可能的复用相同的 DOM 元素,减少 DOM 操作

Key 是 index

  • 和无 Key 一样是就地更新

Key 是 id

  • 唯一的字符串或数字
  • 新旧 DOM 对比时,使用 Key 进行比较,差异更新

动态设置 class 和 style

class

  • 作用

    • 根据 boolean 值来动态控制类名是否生效
  • 用法

    • :class="{类名: 布尔值}"

style

  • 作用

    • 动态的添加行内样式
  • 用法

    • :style="{css 样式名: 样式值}"
    • 连接符改为驼峰命名

计算属性

作用

  • 依赖多个数据计算得来的结果,依赖的数据变化时会自动更新结果

特点

  • 依赖数据变化会自动重新调用
  • 有缓存
  • 不能和 data 中的数据重名

用法

  • 简单写法

    computed: {
        计算属性名() {
            return 值(可以依赖其他地方的数据)
        }
    }
    
  • 完整写法

    computed: {
        计算属性名: {
            set(val) {},
            get() { return 值 }
        }
    }
    
当计算属性被修改时会触发 set 方法, 并把修改的值传递过来

侦听器

作用

  • 侦听数据变化, 触发函数执行

用法

  • 简单写法

    watch: {
        要侦听的数据名(newVal, oldVal) {
            // 当数据变化时, 函数调用
            console.log(newVal, oldVal)
        }
    }
    
  • 完整写法

    watch: {
        要侦听的数据名: {
            deep: true, // 深度侦听
            handler(newVal, oldVal) {}
        }
    }
    

\