vue3+ts学习(二):vue的基础指令

57 阅读1分钟

基础指令,不常用:

v-once:该标签及子标签只渲染一次(用于性能优化)

v-text:用的比较少 等价于{{ }}

v-html:对html进行解析

v-pre:跳过该标签及子标签对{{ }}的解析

常用指令:

v-bind:缩写 : 动态绑定属性,与class和style可以实现对象语法和数组语法

      <!-- class对象语法 isRedColor为true则存在该类-->
      <h2 :class="{'redColor':isRedColor,'bigSize':isBigSize}">{{message}}</h2>
      <!-- 默认class可与动态class结合 -->
      <!-- <h2 class="aaa" :class="{'redColor':isRedColor,'bigSize':isBigSize}">{{message}}</h2> -->
      <!-- 可直接传一个类对象,也可传一个函数的返回值,也可以传一个计算属性 -->
      <!-- <h2 :class="classObj">{{message}}</h2> -->
      
      <!-- class数组语法 bigSize为类名-->
      <h2 :class="['redColor',bigSize]">{{message}}</h2>
      <!-- 可用三元表达式 -->
      <!-- <h2 :class="['redColor',isBigSize? 'bigSizeData':'']">{{message}}</h2> -->
      <!-- 也可结合对象语法 -->
      <!-- <h2 :class="['redColor',{'bigSizeData':isBigSize}]">{{message}}</h2> -->
      
      <!-- style对象语法-->
      <!-- 属性名用横线连接的话必须加单引号,不然用驼峰fontSize也可以 -->
      <div :style="{color:'red','font-size':'15px'}">{{message}}</div>
      <!-- 也可用表达式拼接 -->
      <div :style="{color:'red',fontSize:number+ 'px'}">{{message}}</div>
      <!-- 也可直接放入对象 -->
      <div :style="styleObj">{{message}}</div>
      
      <!-- style数组语法-->
      <!-- 比较少用,用于多个动态样式对象 -->
      <div :style="[styleObj1,styleObj2]">{{message}}</div>

还能用于动态绑定属性名

      <!-- 用于组件开发 this.name = "shuai" 则最终显示 shuai="message"-->
      <div :[name]="message">{{message}}</div>
      
      <!-- 用于封装高阶组件 this.propObj.name/age等 均会动态绑定属性名在该组件上-->
      <div v-bind="propObj">{{message}}</div>

v-on: 缩写@ 动态绑定方法

    <!-- 语法糖 -->
    <div class="area" @mousemove="mouseMove">{{message}}</div>
    <!-- 可加入表达式 -->
    <button @click="number++">{{number}}</button>
    <!-- 绑定一个对象 -->
    <div class="area" v-on="{click:btn1Click,mousemove:mouseMove}"></div>
    <!-- 不传参数vue默认会传event -->
    <button @click="btn1Click">按钮1</button>
    <!-- 传参数时要获取event要传$event -->
    <button @click="btn2Click($event,'shaui',18)">按钮2</button>

image.png

v-if,v-else-if,v-else

惰性的条件渲染,性能损耗较大,会销毁标签而不是显示和隐藏,不适于频繁切换

多个标签的条件渲染可以通过template包裹

v-show

只针对css显示隐藏元素,标签一直存在于页面上,适用于频繁切换

不支持template使用,不与v-else使用