首页 > 其他分享 >《vue语法篇》基础语法

《vue语法篇》基础语法

时间:2024-01-16 10:12:10浏览次数:23  
标签:vue 自定义 父级 基础 语法 Vue 事件 组件 data

ref和$ref

在Vue中,$ref是一个特殊的属性,它允许您引用组件或DOM元素。可以使用$ref属性在组件或元素上绑定一个唯一的标识符,然后在Vue实例中使用$ref来访问该组件或元素。类似于id选择器。

例如,假设您有一个组件:

点击查看代码
<template>
  <div>
    <input type="text" ref="myInput">
    <button @click="focusInput">Focus Input</button>
  </div>
</template>

<script>
export default {
  methods: {
    focusInput() {
      this.$refs.myInput.focus();
    },
  },
};
</script>

在上面的组件中,我们有一个输入框和一个按钮,点击按钮将调用focusInput()方法来将焦点设置到输入框。我们使用了ref="myInput"属性,这意味着我们可以在Vue实例中使用this.$refs.myInput来引用输入框元素。

$refs属性可以引用带有ref属性的组件或元素。但是,应该谨慎使用$refs,以避免破坏Vue的响应性能。在大多数情况下,最好使用props和事件来实现组件之间的通信。

props

在Vue.js中,props是一种向子组件传递数据的方式。将props添加到子组件中,可以在父组件中传递数据到子组件。这样就可以实现组件之间的数据通信。

可以在子组件中定义一个props,然后在父级组件中通过v-bind指令将数据传递给子组件。在子组件中,可以通过props属性来获取数据。

例如,一个名为HelloWorld的子组件可以定义如下的props:

Vue.component('HelloWorld', {
  props: {
	message: String
  },
  template: '<div>{{ message }}</div>'
})

这里定义了一个名为message的props,它的类型是String。在子组件的模板中,使用{{ message }}展示prop传递的数据。

在父级组件中,可以通过v-bind指令将数据传递给子组件:

<HelloWorld message="Hello, World!"></HelloWorld>

这样,父级组件就会将一个名为message,值为“Hello, World!”的prop传递给子组件。子组件会将这个值渲染到模板中,显示出“Hello, World!”这个文本。我们也可以用v-bind来动态绑定message的值:

<HelloWorld v-bind:message="parentMessage"></HelloWorld>

这里的parentMessage是父级组件的一个数据属性。通过v-bind指令动态绑定message的值,可以实现动态更新子组件的数据。

总的来说,props是一种很实用的组件通信方式,它可以让Vue.js中的组件之间更灵活地传递数据。

$emit和$on

$emit

在Vue.js中,$emit是一种自定义事件的机制,用于在子组件中触发事件并向父级组件传递数据。

使用$emit,可以在子组件中触发一个自定义事件,并传递一些数据给父级组件。在父级组件中,可以使用@监听子组件的自定义事件,然后执行相应的操作。

具体使用方法如下:

首先,在子组件内部定义一个方法,用于触发自定义事件:

methods: {
  handleClick() {
	this.$emit('customEvent', 'Some data')
  }
}

这里,handleClick方法通过this.$emit('customEvent', 'Some data')触发一个名为customEvent的事件,并将数据“Some data”作为参数传递给该事件。

然后,在父级组件中,使用@监听子组件的自定义事件,并执行相应的操作:

<my-component @customEvent="handleCustomEvent"></my-component>

methods: {
  handleCustomEvent(data) {
	console.log(data) // 输出 Some data
  }
}

这里,在父级组件的模板中使用@监听子组件的自定义事件customEvent,并将其绑定到handleCustomEvent方法上。

当子组件触发customEvent事件时,触发handleCustomEvent方法,并传递数据“Some data”,这时,handleCustomEvent方法可以对数据进行处理。

总的来说,$emit机制可以实现自定义事件的触发和监听,方便组件之间的数据传递和通信。在实际开发中,$emit常用于复杂组件的交互,实现组件间的数据共享与通信。

在Vue.js中,$on是一种自定义事件的监听机制,用于监听组件内部或父级组件中发出的事件。

$on

$on方法主要用于监听自定义事件。通过$on方法在组件内部或父级组件中监听特定的自定义事件,当事件被触发时,就会执行相应的回调函数。

例如,在组件内部定义一个名为customEvent的自定义事件:

methods: {
  handleClick() {
	this.$emit('customEvent', 'Some data')
  }
}

在Vue实例中,通过$on来监听该自定义事件:

created() {
  this.$on('customEvent', function(data){
	console.log('Custom event triggered with data:', data)
  })
}

这里通过created钩子函数,在Vue实例中定义一个$on方法,用于监听名为customEvent的自定义事件。当这个事件被触发时,会执行回调函数,并打印出事件的数据。

注意,$on方法要放在组件或实例的生命周期钩子函数中,才能被正确实例化和监听。

总而言之,$on方法可以监听自定义事件,并在事件触发时执行相应的回调函数。它非常有用于处理组件之间的通信,特别是在复杂组件应用中,可以用来实现不同组件之间的数据传递和状态管理。

标签:vue,自定义,父级,基础,语法,Vue,事件,组件,data
From: https://www.cnblogs.com/fusio/p/17478263.html

相关文章

  • Vue实现大文件分片上传,包括断点续传以及上传进度条
    首先解释一下什么是分片上传分片上传就是把一个大的文件分成若干块,一块一块的传输。这样做的好处可以减少重新上传的开销。比如:如果上传的文件是一个很大的文件,那么上传的时间应该会比较久,再加上网络不稳定各种因素的影响,很容易导致传输中断,用户除了重新上传文件外没有其他的办法......
  • 转发 vb.net 使用 lamdar表达式 IProgress 不报告,注意 function 与 sub 的语法
    转发网址:https://qa.1r1g.com/sf/ask/3476729581/IProgress不报告  vb.net async-await progress-bar 我有以下代码来报告进度。该函数CalculateMandelbrot()似乎是异步工作的,但我的进度条什么也没显示。PublicClassForm1PrivateAsyncFunctionButton1_Clic......
  • java基础
    Java基础部分基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须......
  • 计算机基础
    一、编码问题1.ASCIIASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。ASCII码使用7位二进制数(0~127)来表示128个字符,包括控制字符(如换行、回车制表符等)和可打印字符(......
  • U-Boot Sandbox 基础
    U-BootSandbox是一个仿真平台,可以用来调试u-boot的非架构相关代码。平台:ubuntu22.04forx86_641.开发环境Ubuntu22.04forx86_64.$sudoaptupdate$sudoaptinstallbuild-essentialflexbisongawktexinfolibsdl2-devpython3-setuptoolspython3-devswig......
  • ES--Metric聚合语法
    Metric聚合,例如stat聚合:就可以获取min、max、avg等结果。语法如下:GET /hotel/_search{  "size": 0,   "aggs": {    "brandAgg": {       "terms": {         "field": "brand",         "size": 20      },      &quo......
  • 14_Java基础-运算符3:逻辑运算符+位
    逻辑运算符&&(与)逻辑与运算,两个变量都为真,结果为true||(或)逻辑或运算,两个变量有一个为真,结果为true!(非)如果是真,则变为假,如果是假则变为真短路运算第一个数为错,后面不执行位运算符&(和)|(或)^(异或)~(取反)位运算,不要轻易用,容易出错,效率极高<<:左移:x2》》:右移:/2......
  • 深度学习基础知识整理
    自动编码器Auto-encoders是一种人工神经网络,用于学习未标记数据的有效编码。它由两个部分组成:编码器和解码器。编码器将输入数据转换为一种更紧凑的表示形式,而解码器则将该表示形式转换回原始数据。这种方法可以用于降维,去噪,特征提取和生成模型。自编码器的训练过程是无监督的,因......
  • 在Azure上备份AKS Cluster - 基础介绍以及部署配置
    今天来看一看AKSCluster里的一些新功能,AKS里的新功能非常多,之后可以考虑挑一部分简单介绍介绍,今天先开个头,主要来谈一下AKS的备份问题,这其实也是来源于之前的一个需求,有客户问到AKSCluster我们是如何备份的,说实话问得我有点懵,之前基本没怎么考虑过这方面的问题,因为众所周知的是容......
  • vue中render函数和h函数
    "render"函数是Vue组件的一个重要方法,它用于描述组件的视图结构,并负责渲染虚拟DOM树。"render"函数是一个JavaScript函数,它接受一个名为createElement的参数,用于创建虚拟DOM节点。这使得你可以使用JavaScript来构建虚拟DOM树,包括元素、组件、指令等,为你提供更高的灵活性。render......