VueDay03

2023-05-30  本文已影响0人  远方的路_

1. computed与watch

computedwatch之间的区别与联系:

1.1 computed

1.2 watch

2. 条件渲染

2.1 v-show

  1. 语法:v-show="表达式"
  2. 适用于:切换频率较高的场景。
  3. 特点:不展示的DOM元素依然在,仅仅是使用样式隐藏掉了,不破坏DOM结构。

2.2 v-if

  1. 语法:

    v-if="表达式" 
    v-else-if="表达式"
    v-else
    
  2. 适用于:切换频率较低的场景。

  3. 特点:不展示的DOM元素直接被移除。

    注意点:

    1. v-if可以和:v-else-ifv-else一起使用,但要求结构不能被“打断”。
    2. 如果使 用v-if,可能会出现无法获取元素的问题。

3. 列表渲染

3.1 v-for 指令

  1. 指令:v-for
  2. 作用:用于遍历数据,生成多个结构。
  3. 语法:v-for="(item,index) in xxx" :key="????"

通俗理解:想生成多个谁,就在谁身上加v-for,别忘了写key

key的使用原则(同react):有唯一值就用唯一值(身份证号、手机号、学号......),没有就用索引值。

3.2 详聊 v-for

  1. 遍历数组

    <ul>
      <li v-for="(item,index) in arr" :key="index"> {{item}} </li>
    </ul>
    
  2. 遍历对象

    <li v-for="(value,key,index) in car" :key="index"> 
      {{value}} - {{key}} - {{index}}
    </li>
    
  3. 遍历字符串

    <li v-for="(char,index) in str" :key="index"> 
      {{char}} - {{index}} 
    </li>
    
  4. 遍历指定次数

    <li v-for="(number,index) in 10" :key="index"> 
      {{number}} - {{index}}
    </li>
    
  5. v-for很健壮,遍历如下内容都不会报错

    <h1 v-for="(a,b) in null">尚硅谷</h1>
    <h1 v-for="(a,b) in undefined">尚硅谷</h1>
    <h1 v-for="(a,b) in '' ">尚硅谷</h1>
    <h1 v-for="(a,b) in true ">尚硅谷</h1>
    

3.3 人员案例

filter.gif
  1. 可以使用watchcomputed分别去实现一下,发现用computed更简单。
  2. 用到了:字符串的includes方法,数组的filter方法。

4. 数据劫持

4.1 何为数据劫持

4.2 Vue中的数据劫持

  1. 具体实现方式:

    • Vue收集到数据后,会将所有层级的属性,全都改为gettersetter的形式,随后放在_data中。
    • _data中的数据放生变化时,对应的setter会执行,在setter中会:①修改数据、②更新界面。
  2. 图示:


    proxy_set.png

4.3 总结_数据代理 _数据劫持

5. Vue中使用函数的原则

遵循上述两个原则的目的只有一个:让this的指向是vm

6. 其它指令

  1. 我们学过的指令:

    • v-bind : 单向数据绑定, 可简写为 :xxx
    • v-model : 双向数据绑定
    • v-for : 遍历数组/对象/字符串/指定次数
    • v-on : 绑定事件监听, 可简写为@
    • v-if : 条件渲染(动态控制节点是否存在)
    • v-else-if : 条件渲染(动态控制节点是否存在)
    • v-else : 条件渲染(动态控制节点是否存在)
    • v-show : 条件渲染 (动态控制节点是否展示)

v-text

作用:向其所在的节点中渲染文本内容。

与插值语法的区别:v-text会替换掉节点中的内容,{{xx}}则不会。

v-html

作用:向指定节点中渲染包含html结构的文本。
与插值语法的区别:

  1. v-html会替换掉节点中所有的内容,{{xx}}则不会。

  2. v-html可以识别html结构。

  3. 备注:v-html存在一些安全性问题,因为结构中很有可能包含恶意脚本。

v-once

  1. v-once所在节点在初次动态渲染后,就视为静态内容了。
  2. 以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能。

v-pre

跳过这个元素和它的子元素的编译过程,一般用在大量不使用Vue语法的结构中。

v-cloak

  1. 本质是一个特殊属性,Vue接管容器后,会删掉v-cloak属性。

  2. 使用css配合v-cloak可以解决网速慢时,页面展示出{{xxx}}的问题。

7. 收集表单数据

  1. 若:<input type="text"/>,则v-model收集的是value值,用户输入的就是value值。
  2. 若:<input type="radio"/>,则v-model收集的是value值,且要给标签配置value值。
  3. 若:<input type="checkbox"/>
    • 没配置inputvalue属性,那么收集的就是checked(勾选 或 未勾选,是布尔值)
    • 配置了inputvalue属性:
      • v-model的初始值是非数组,那么收集的就是checked(勾选 或 未勾选,是布尔值)。
      • v-model的初始值是数组,那么收集的就是value组成的数组。
上一篇 下一篇

猜你喜欢

热点阅读