vue02

82 阅读2分钟

Vue第二天

vue指令

v-text和v-html

语法:

v-text="vue数据变量"

v-html="vue数据变量"

注意: 会覆盖插值表达式

v-text

把内容作为文本直接显示

v-html

把值当做html解析html显示

image.png

v-show和v-if

目标: 控制标签的隐藏或出现

语法:

v-show="vue变量"

v-if="vue变量"

原理

v-show 用的display:none隐藏 (频繁切换使用)

v-if 原理是否删除,v-if可以和v-else和v-else-if搭配使用

虚拟DOM

本质是一个JS对象, 保存DOM关键信息

优点:提高DOM更新的性能, 不频繁操作真实DOM,

在内存中找到变化部分, 再更新真实DOM(打补丁)

v-for更新监测

目标: 当v-for遍历的目标结构改变, Vue触发v-for的更新

情况1: 数组翻转

情况2: 数组截取

情况3: 更新值

数组方法

不会修改原始数组的方法不会导致v-for更新

array.filter

array.slice

修改原始数组的方法会导致v-for更新

array.push

array.reverse

array[index] = value

不会触发更新

$set(数组, 索引, 值)

v-for的就地更新

在上一次的列表上逐条修改

image.png

v-for的key的作用

使用:有id用id, 无id用索引

作用:根据key查找元素,定位和更新

优点:key优化性能

条件控制样式

class

语法::class="{ 类名: 布尔值 }"

类名有横线,加引号

style

语法::style="{ 样式属性名: 合法的样式值 }"

样式名有横线,加引号或者小驼峰

过滤器

注意:过滤器只能用在, 插值表达式和v-bind动态属性里

目的: 转换格式, 过滤器就是一个函数, 传入值返回处理后的值

Vue中的过滤器场景

字母转大写, 输入"hello", 输出"HELLO"

字符串翻转, "输入hello, world", 输出"dlrow ,olleh"

语法:

{{ 表达式 | 过滤器1 | 过滤器2(参数1) }}

Vue.filter("过滤器名", (值) => {return "返回处理后的值"})

filters: {过滤器名字: (值) => {return "返回处理后的值"}

过滤器声明

Vue文件data同级的filters属性里

main.js,Vue.filter('过滤器名', 方法)

方法

记得返回数据

方法第一个参数:表达式内容

传给方法的参数从第二个开始

image.png

计算属性

目标: 一个数据, 依赖另外一些数据计算而来的结果

语法:{{ 变量 }}

声明在:data同级的computed对象内

计算属性方法要返回值

好处:缓存计算结果,只有依赖项变化才会重新运算

完整写法:

计算属性: { get() {}, set(value) { } }

image.png