vue动态class、style、过滤器、计算属性、侦听器小结

一、虚拟dom :.vue文件中的template里写的标签, 都是模板, 都要被vue处理成虚拟DOM对象, 才会渲染显示到真实DOM页面上

二、diff 算法 :用于新虚拟dom 和 旧虚拟dom 比较

1、根元素变化→删除重新建立DOM树
2、根元素未变化,属性改变→DOM复用,更新属性
3、根元素未变化,子元素未变化,元素内容改变:
①无 key 就地更新
②有key值为索引 就地更新
③有key - 值为id key的值只能是唯一不重复的, 字符串或数值

三、动态 class :用v-bind给标签class设置动态的值

语法:class="{类名: 布尔值}"
总结: 就是把类名保存在vue变量中赋予给标签

<template>
  <div>
    <!-- 语法:
      :class="{类名: 布尔值}"
      使用场景: vue变量控制标签是否应该有类名
     -->
    <p :class="{red_str: bool}">动态class</p>
  </div>
</template>

<script>   //在script标签中写bool的对错
export default {
  data(){
    return {
      bool: true
    }
  }
}
</script>

<style scoped>  //在style标签中写样式
  .red_str{
    color: red;
  }
</style>

四、动态style :给标签动态设置style的值

语法:style="{css属性: 值}"

<template>
  <div>
    <!-- 动态style语法
      :style="{css属性名: 值}"
     -->
    <p :style="{backgroundColor: colorStr}">动态style</p>
  </div>
</template>

<script>
export default {
  data(){
    return {
      colorStr: 'red'
    }
  }
}
</script>
<style>
</style>

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

单个过滤器语法:
①Vue.filter(“过滤器名”, (值对应的操作) => {return “返回处理后的值”}) //全局注册
②filters: {过滤器名字: (值 | 过滤器) => {return “返回处理后的值”} //局部过滤器只能在当前vue文件使用
全局注册最好在main.js中注册, 一处注册到处使用
多个过滤器语法:
①过滤器传参:vue变量 | 过滤器(实参)
②多个过滤器:vue变量 | 过滤器1 | 过滤器2
过滤器只是单纯的名字,方法需要自己定义

<template>
  <div>
    <p>{{ msg }}</p>  // 原来的样子:

    <p>{{ msg | reverse('实参') }}</p>  // ①使用翻转过滤器 msg值写在return中 ②全局过滤器
    <p :title="msg | toUp | 第二个过滤器 ">鼠标长停</p>  
    
  </div>
</template>

<script>
export default {
  data(){
    return {
      msg: 'Hello, Vue'
    }
  },
  // 方式2: 局部 - 过滤器 只能在当前vue文件内使用
  //  语法:  
     filters: {
       过滤器名字 (val) {
         return 处理后的值
       }
     }
  */
  filters: {
    toUp (val) {  // toUp是过滤器名字
      return val.toUpperCase()  //返回处理后的值
    }
  }
}
</script>
<style>
</style>

六、计算属性 computed:一个数据依赖另外一些数据计算而来的结果

1、语法:

computed: {
    "计算属性名" () {
        return "值"
    }
}

2、计算属性也是vue数据变量,所以不要和data里重名,用法与data相同
3、计算属性的优势:
①带缓存
②计算属性对应函数执行后,会把return值缓存起来
③依赖项不变,多次调用都是从缓存取值
④依赖项值变化,函数会“自动”重新执行,并缓存新的值
4、完整写法(给计算属性变量赋值时使用):

computed: {
    "属性名": {
        set(){  //set接受赋予的值
        },
        get() {
            return "值"  //get里要返回给这个计算属性具体值
        }
    }

}

七、 侦听器 watch :侦听data/computed属性值改变

// 基础侦听
watch: {
    "被侦听的属性名" (newVal, oldVal){  // (当前最新值,上一刻的值)      
    }
}
//深度侦听和立即执行
watch: {
    "要侦听的属性名": {
        immediate: true, // 立即侦听(网页打开handler执行一次)
        deep: true, // 深度侦听(对象里面层的值改变)
        handler (newVal, oldVal) {
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值