Vue常见简写 “:“ , “@“ , “#“

一、 : 是什么?

  1. : 是什么意思?

示例::data="tableData"

其中这个 : 其实是v-bind的简写形式,实际开发中非常常见,所以首先先来说一下这个 : 的意义和使用.

首先需要了解一下v-bind,v-bind指令指示Vue将元素的id属性与组件的tabalData属性保持一致.如果绑定的值为null或undefined,那么该属性将从渲染的元素上移除.通常想要响应式的绑定一个属性,都会选择v-bind.

而 : 就是v-bind的简写形式,可能看起来和一般的HTML属性长得不太一样,但它的确是合法合规的属性绑定字符,并且所有支持Vue的浏览器都可正常解析它.并且,它不会出现在最终渲染的Dom中,相信在你深入了解过它后,会喜欢这种写法的.

2.怎么使用 : ?

最常见的应该就是 : disabled 通常用来判断是否禁用,当isButtonDisabled为true或空字符串时表示禁用,当isButtonDisabled为false时,表示不禁用

其中 : 表示v-bind,表示disabled该boolean类型判断与isButtonDisabled该boolean类型属性进行绑定,isButtonDisabled属性的boolean值等于disabled的boolean值.

<button :disabled="isButtonDisabled">Button</button>

也可以动态绑定多个值,例如一个对象

data() {

return {

objectOfAttrs: {

id: 'container',

class: 'wrapper'

}

}

}

<div v-bind="objectOfAttrs"></div>

或者一个数组

<script setup lang="ts">

import { tableData } from "./data";

const columns: TableColumnList = [

{

label: "日期",

prop: "date"

},

{

label: "姓名",

prop: "name"

},

{

label: "地址",

prop: "address"

}

];

</script>

<template>

<pure-table :data="tableData" :columns="columns" />

</template>

二、@ 是什么?

  1. @ 是什么意思?

示例: @click="add"

其中这个@其实就是v-on的简写形式,实际开发中也非常常见,接下来说一下@的意义和使用

首先了解一下v-on,如果我们想监听用户的点击, 拖拽, 键盘事件等, 可以使用v-on指令.例如通过用户的点击,去调用该点击事件的方法来改变属性的值.

2.怎么使用 @ ?

如下例子,页面中会有两个按钮,一个上面标注[+],一个上面标注[-],当用户点击[+]按钮时,会调用后面的add方法,方法中对属性counter进行+1操作.

<body>

<div id="app">

<h2>{{counter}}</h2>

<button @click="add">+</button>

<button @click="sub">-</button>

</div>

<script src="../js/vue.js"></script>

<script>

const app = new Vue({

el: '#app',

data: {

counter: 0

},

methods: {

add() {

this.counter++

},

sub() {

this.counter--

}

},

})

</script>

</body>

也可以在按钮点击事件上传入参数,如: @ click="adds(3)"

<body>

<div id="app">

<h2>{{counter}}</h2>

<button @click="adds(3)">+</button>

</div>

<script src="../js/vue.js"></script>

<script>

const app = new Vue({

el: '#app',

data: {

counter: 0

},

methods: {

adds(n) {

this.counter+n

}

},

})

</script>

</body>

三、# 是什么?

  1. 是什么意思?

示例: template #header

其中这个#其实就是v-slot的简写形式,实际开发中也非常常见,接下来说一下#的意义和使用

首先了解一下v-slot,v-slot是具名插槽所使用的指令,意思就是将这部分模版片段传入子组件对应名字的插槽中,如果不太了解什么插槽,请查看Vue.js中文文档.插槽 Slots | Vue.js

2.怎么使用 # ?

如下代码,向<BaseLayout>传递插槽内容

<BaseLayout>

<template #header>

<h1>Here might be a page title</h1>

</template>

<!-- 隐式的默认插槽 -->

<p>A paragraph for the main content.</p>

<p>And another one.</p>

<template #footer>

<p>Here's some contact info</p>

</template>

</BaseLayout>

在组件中使用slot+name具名插槽

<template>

<div class="container">

<header>

<slot name="header"></slot>

</header>

<main>

<slot></slot>

</main>

<footer>

<slot name="footer"></slot>

</footer>

</div>

</template>

<template>元素中的内容全部被传递到相应的插槽,最终渲染出的HTML为:

<div class="container">

<header>

<h1>Here might be a page title</h1>

</header>

<main>

<p>A paragraph for the main content.</p>

<p>And another one.</p>

</main>

<footer>

<p>Here's some contact info</p>

</footer>

</div>

总结

提示:以上就是今天要讲的内容,本文仅仅是作为初学者对Vue不太了解,无法读懂一些简写代码的知识补充,讲解的也是比较基础并且常用的一些简写.如依旧不太了解,请去Vue.js官方中文文档继续学习.

相关推荐
时光少年2 分钟前
Android 视频分屏性能优化——GLContext共享
前端
IT_陈寒20 分钟前
JavaScript开发者必知的5个性能杀手,你踩了几个坑?
前端·人工智能·后端
跟着珅聪学java23 分钟前
Electron 精美菜单设计
运维·前端·数据库
日光倾24 分钟前
【Vue.js 入门笔记】闭包和对象引用
前端·vue.js·笔记
EstherNi26 分钟前
左右两侧定位的效果,vue3
javascript·vue.js
一只程序熊30 分钟前
UniappX 未找到 “video“ 组件,已自动当做 “view“ 组件处理。请确保代码正确,或重新生成自定义基座后再试。
前端
林小帅32 分钟前
【笔记】xxx 技术分享文档模板
前端
雾岛心情37 分钟前
【HTML&CSS】HTML为文字添加格式和内容
前端·css·html
心.c1 小时前
如何在项目中减少 XSS 攻击
前端·xss
Rsun045511 小时前
Vue相关面试题
前端·javascript·vue.js