Vue-条件,列表渲染-key的底层原理

前言


个人主页: 阿选不出来

个人简介: 一名大二在校生, 不定时更新自己学习道路上的一些笔记.

目前开发的专栏: JS VueJS进阶

接上一篇 Vue-模板语法-计算属性与监听属性的介绍和差异

Class绑定-列表,数组的渲染

  • 一.class与style绑定
    • 绑定 HTML Class
      • 对象语法
      • 数组语法
      • 多重值
  • 二.条件渲染
    • v-if
      • 作用
      • 写法
      • 分组条件渲染
      • 用key 管理元素的复用
    • v-show
    • v-if VS v-show
  • 三.列表渲染
    • v-for
      • 在数组中
      • 在对象中
    • 维护状态
    • (key 的内部原理)
    • 数组更新检测
      • 变更方法
      • 替换数组
  • 写在最后

一.class与style绑定

操作元素的class列表和内联样式是数据绑定的一个常见需求.我们很容易想到用 v-bind 来添加这些属性(通过表达式计算出字符串即可).

但是这样做的弊端无疑就是拼接字符串很麻烦. 因此,vue.js 在使用 v-bind 进行class 与 style 绑定的时候,做出了如下改变:

表达式结果的类型除了字符串以外,还可以是数组或者对象的形式.

绑定 HTML Class

对象语法

适用于: 要绑定多个样式, 个数不确定, 名字也不确定

  • 绑定一个class

    • HTML:
    • data: data: {isActive: true}
    • 结果:
  • 绑定多个class

    • HTML:

    • data: data: {isActive: true, hasError: false}

    • 结果:

      注意: 如果绑定的class类很多,我们也可以只绑定一个样式对象,例

      html:

      data: data: {classObj:{active: true, text-danger: false}}

  • 绑定一个返回对象的计算属性

    • HTML:

    • 结果:

      computed: {
      	classObject: function(){
      		return {
      			//...
      		} 
      	}
      }
      

      增大了class绑定的灵活性.

数组语法

  • 绑定一个或多个属性
    • HTML:
    • data: data: {activeClass: 'active',errorClass: 'text-danger'}
    • 结果:
  • 数组元素还可以是三元表达式
    • HTML:

多重值

从2.3.0起你可以为 style绑定中的 property 提供一个包含多个值的数组, 常用于提供多个带前缀的值:

eg:

二.条件渲染

v-if

作用

v-if 指令用于条件渲染一块内容.这块内容只会在指令的表达式返回 truthy 值得时候被渲染.

写法

  1. v-if
  2. v-else-if
  3. v-else

注意: v-if可以和v-else-if, v-else一起使用, 但要求结构不能被"打断"

分组条件渲染