vue3中常用的指令之v-bind和v-on

这篇具有很好参考价值的文章主要介绍了vue3中常用的指令之v-bind和v-on。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、v-bind指令

一个vue2和vue3之间的不同之处:Vue2中template模板中只能有一个根元素,但是在Vue3中允许template中有多个元素。

1.v-bind的绑定基本属性

某些属性也希望是动态绑定的,比如动态绑定a元素中的href属性。
v-bind可以绑定一个或者多个属性值,或者向另一个组件中传递props值。

<template id='my-app'>  
  <a v-bind:href="href"></a>
<!--   对应的语法糖 -->
  <a :href="href"></a>
</template>

v-bind 有一个对应的语法糖,也就是简写形式,直接写:,使得更加简洁。

2.v-bind绑定class

1)在开发过程中,有时候元素class也是动态的,比如:
当数据为某个状态时候,字体显示红色;
当数据为另一个状态的时候,字体显示为黑色。
2)绑定class有两种方式
① 对象语法

<style>
    .active{
        color:red;
    }
</style>

<body>
    <div id="app"></div>

    <template id="my-app">
        <div :class="{'active':isActive}">哈哈哈哈</div>
        <button @click="toggle">切换</button></button>
    </template>

    <script src="../js/vue.js"></script>
    <script>
        const App = {
            template:'#my-app',
            data(){
                return {
                    isActive:true,
                }
            },
            methods: {
                toggle(){
                    this.isActive=!this.isActive
                }
            },
        }

        Vue.createApp(App).mount('#app');
    </script>
</body>
  • 可以使用单个键值对,这里
    哈哈哈哈
    其实使用的是对象形式, 语法为{‘active’:boolean}.
  • 也可以使用多个键值对,语法为{‘active’: isActive, ‘title’:true}
  • 一个小细节:语法中的active这个类名可以不加引号,直接写{active:true}
  • 也可以将默认的class和动态绑定的class结合
<div class="hader" :class="{'active':isActive}">哈哈</div>
  • 可以将对象放在一个单独的属性中
<div :class="classObj">哈哈哈哈</div>

// data中
<script>
        const App = {
            template:'#my-app',
            data(){
                return {
                    isActive:true,
                    classObj:{
                        active:true,
                    }
                }
            },
            methods: {
                toggle(){
                    this.isActive=!this.isActive
                }
            },
        }

        Vue.createApp(App).mount('#app');
    </script>
  • 将返回的对象放在一个methods()方法中
<div :class="getClassObj()">哈哈哈哈</div>

② 数组语法

  • 基本的写法
 <div :class="['abc']"></div>
  • 数组语法中可以嵌套对象语法
 <!-- 数组语法中实际上是可以嵌套对象语法的 -->
  <div :class="['abc',{active:isActive}]"></div>

3.v-bind中绑定style

1)可以利用v-bind:style绑定一些CSS内联样式:
因为一些样式是需要根据数据动态决定的;
比如某段文字的颜色,字体大小等。
2)可以使用驼峰式(camelCase)或者短横线分隔(kebab-case,记得用引号括起来)来命名。
3)绑定style的两种方式
① 对象语法

<div :style="{color:'red'}">hahhah</div>
  • 上面的语句如果是动态绑定,并且意思是颜色为red红色,那么后面的red必须加上引号,不然就会认为是一个变量,或者可以用下面的形式写。
<div :style="{color:color}">hahhah</div>
data(){
    return {
      color:'red'
    }
}
  • 或者也可以用拼接的形式
<div :style="{color:color,fontSize:finalFontSize+'px'}">hahhah</div>
data(){
  return {
    color:'red',
    finalFontSize:50,
  }
}
  • 也可以直接都写成对象
<div :style="finalStyleObj">hahhah</div>
data(){
  return {
    finalStyleObj:{
      fontSize:'30px',
      fontWeight:700,
      backgroundColor:'red'
    }
  }
}
  • 可以直接放在methods中
<div :style="getFinalStyle()">hahhah</div>
methods:{
  getFinalStyle(){
    return {
      fontSize:'30px',
      fontWeight:700,
      backgroundColor:'red'
    }
  }
}

②数组语法
和绑定class是类似的。

  <div :style="[styleObj,style2Obj]">hhhh</div>
data(){
       return {
        styleObj:{
          color:'red',
        },
         style2Obj:{
           fontSize:'20px'
         }
    }
 }

4.动态绑定属性

在某些情况下,比如说自定义组件中,我们的属性名可能也是不固定的。
1)之前所学的src、href、class、style,属性名称都是固定的。
2)如果属性名称不是固定的,那么就意味着这些东西也是可以自己定义的,格式是 :[属性名]=‘值’。
3) 这种绑定的方式,就称为动态绑定属性。

<!-- 属性的名称也不是动态的 -->
<div :[name]="value">哈哈哈哈</div>
data(){
        return {
             name:'abc',
             value:'yan'
       }
  }

5.v-bind属性直接绑定一个对象

如果想要将一个对象的所有属性,绑定到元素上的所有属性,可以直接使用v-bind绑定一个对象
最终想要的结果是下面这样的,将一个对象中的所有属性都绑定为元素的所有属性。
vue3中常用的指令之v-bind和v-on,前端,javascript,vue.js

<template id="my-app">
  <div v-bind="info"></div>
</template>
data(){
  return {
    info:{
      name:'qian',
      age:'18',
    }
  }
}

二、v-on指令

v-on在Vue中用来绑定事件监听。

1.v-on的基本使用

  • 缩写是@
  • 完整写法:v-on:监听的事件=“methods中的方法” ,例如 v-on:click=“toggle”,它的语法糖是@click
  • 绑定其他事件
<button @mousemove="mouseMove"></button>
  • 绑定一个对象,这个其实是因为绑定多个事件,将它们放在一个对象中
<button v-on="{click:btnClick, mousemove:mouseMove}"></button>

2.v-on参数传递

1)当通过methods中定义方法,供@click 调用的时候,如果不需要额外的参数,那么在方法的括号中可以不添加任何参数,但是在methods中的方法其实是默认接收了一个原生事件event。

<button @click="btnClick"></button>
methods: {
  btnClick(event){
    console.log(event);
  }
},
  1. 如果需要同时传入一个参数,同时需要event时候,可以通过$event传入事件。
<button @click="btnClick1($event,'why')">jjj</button>
methods: {
  btnClick1(event,message){
    console.log(event,message);
  }
},

3.v-on 的修饰符

vue3中常用的指令之v-bind和v-on,前端,javascript,vue.js

4.条件渲染

在某些情况下,需要根据当前的条件决定某些元素或者组件是否渲染,这个时候需要进行条件判断。
v-if、v-else、v-else-if用于根据条件渲染某一块内容。
1)只有条件为true时,才会被渲染出来
2)这三个指令与JavaScript中的条件语句if、else、else if类似;
3)v-if的渲染原理:
v-if是惰性的;当条件为false时,其判断的内容完全不会被渲染或者被销毁掉;当条件为true时,才会真正渲染条件块中的内容。

5.v-show和v-if的区别

1)用法上:v-show不支持在template标签上使用;v-show不可以和v-else一起使用。v-show 是通过 display 来控制标签进行渲染的,但是 template 标签在 vue 解析后是不会显示在页面上的,是虚拟 Dom,所以无法使用 v-show。反之 v-if 是可以使用在 template 标签上,因为 v-if 是条件渲染,只要满足 v-if 后的条件就可以完成渲染。
2)本质上:v-show元素无论是否需要显示到浏览器上,它的DOM实际上都是有渲染的,只是通过CSS的display属性来进行切换;v-if当条件为false时,其对应的原生压根就不会被渲染到DOM中。
3)开发中如果原生需要在显示和隐藏之间频繁切换,就使用v-show;如果不会频繁发生切换,就使用v-if。文章来源地址https://www.toymoban.com/news/detail-595113.html

到了这里,关于vue3中常用的指令之v-bind和v-on的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue (v-bind指令、el与data的两种写法、理解MVVM、数据代理、V-no事件处理、双向数据绑定V-model、登陆页面实现

    V-no用于监听DOM对象 v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。 按钮的事件我们可以使用 v-on 监听事件,并对用户的输入进行响应。 下拉选项实例:

    2024年01月23日
    浏览(61)
  • Vue基础 - v-bind修改属性

    div id=\\\"app\\\" label for=\\\"r1\\\"修改颜色/labelinput type=\\\"checkbox\\\" v-model=\\\"use\\\" id=\\\"r1\\\" brbr div v-bind:class=\\\"{\\\'class1\\\': use}\\\"    !--如果use为true,则{\\\'class1\\\': use}=class1,否则为空-- v-bind:class 指令 /div /div script new Vue({ el: \\\'#app\\\', data:{     use: false    //这里赋值为false,所以没有调用class1 } }); /script

    2024年01月23日
    浏览(60)
  • [Vue] CSS中的v-bind

    在 Vue 中说到 v-bind 大多数时候都是想到 template 中动态绑定 script 中的响应式数据。 但其实在单文件组件(SFC)中, style 标签内也可以使用 v-bind 函数绑定数据。 如上图第18行代码,使用 v-bind(color) 绑定了数据。 当数据变化时,css样式随之变化: 原理 :(截取自Vue官方文档)

    2024年02月19日
    浏览(35)
  • Vue中v-bind=“$attrs”的使用方法

    主要用于组件之间的隔代传值。例如有 父组件A,子组件B,孙组件C 三个组件。 在A组件中传值给C,可直接在B中的C上设置v-bind=\\\"$attrs\\\",然后在C组件中用prop接收,此时就直接把值传给了C。 用法如下: 组件A 组件B 组件C 组件隔代通讯其它相关用法: Vue中v-on=“$listeners“的使用

    2024年02月14日
    浏览(37)
  • vue 简单实验 v-bind 变量与html属性绑定

    1.代码 2.运行结果  

    2024年02月11日
    浏览(39)
  • vue v-on 艾特@

    vue v-on 内联代码: 运行效果 methods方法 带参数 演示

    2024年02月10日
    浏览(39)
  • vue中v-bind和v-model的区别

    v-bind 和 v-model 是Vue.js中的两个常用指令,它们在功能和用途上有一些区别。 v-bind 指令(或简写为 : )用于动态 绑定数据到HTML属性 (不是双向的)。它允许您将Vue实例的数据绑定到HTML元素的属性上,并根据数据的变化动态更新属性的值。可以使用 v-bind 指令来实现属性的动态

    2024年02月13日
    浏览(37)
  • vue 简单实验 v-on html事件绑定

    1.代码 2.运行结果

    2024年02月11日
    浏览(36)
  • Vue中v-on=“$listeners“的使用方法

    用于底层组件向高级层组件传递信息。 例如有 父组件A,子组件B,孙组件C 三个组件,如果C传递信息给B则可直接使用$emit,如果是C向A传递信息还使用$emit,则就需要C先$emit给B,B再$emit给A,这种方式比较繁琐,则此时可以使用v-on=\\\"$listeners\\\"来满足当前需求。 用例: C组件 B组件

    2024年02月14日
    浏览(42)
  • Vue中v-on的基础用法、参数传递和修饰符

    目录 一、v-on的基本用法 使用v-on:click给button绑定监听事件以及回调函数,@是v-on:的缩写,也就是简写也可以使用@click。方法一般是需要写方法名加上(),在@click中可以省掉,如上述的加。 二、v-on的参数传递 三、v-on的修饰词 .stop的使用,btn的click事件不会传播,不会冒泡到上

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包