探索 Vue 实例方法的魅力:提升 Vue 开发技能(上)

news2025/7/18 1:50:06

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • 一、引言
    • 介绍 Vue 实例方法的重要性和作用
  • 二、Vue 实例方法简介
    • 解释什么是 Vue 实例方法
    • 展示如何在 Vue 组件中使用实例方法
  • 三、常见的 Vue 实例方法
    • `$data`:访问和修改组件的数据
    • `$watch`:监听组件的数据变化
    • `$emit`:触发组件的事件
    • `$nextTick`:在 DOM 更新后执行回调函数
    • `$mount`:手动挂载组件
    • `$destroy`:手动销毁组件

一、引言

介绍 Vue 实例方法的重要性和作用

在 Vue 中,实例方法是指在 Vue 组件的实例上可以调用的方法。
这些方法可以用于处理组件的生命周期事件、响应用户交互、操作数据等。

以下是一些常见的 Vue 实例方法及其作用:

  1. data:用于定义组件的属性和数据,组件中的数据都应该在data选项中进行定义。
  2. methods:用于定义组件的方法,组件中的方法都应该在methods选项中进行定义。
  3. computed:用于定义计算属性,计算属性可以根据组件中的数据进行动态计算,并返回结果。
  4. watch:用于监听组件中的数据变化,当数据发生变化时,可以触发相应的回调函数。
  5. Lifecycle:用于处理组件的生命周期事件,如createdmountedupdated等。
  6. template:用于定义组件的模板,模板中可以使用 HTML 、Vue 指令和组件等来构建组件的界面。

在这里插入图片描述

这些实例方法在 Vue 组件的开发中起到了非常重要的作用,它们可以帮助我们更好地组织和管理组件的代码,提高组件的可维护性和复用性。同时,实例方法还可以让我们更加方便地处理组件的生命周期事件和用户交互,提高组件的性能和用户体验。

二、Vue 实例方法简介

解释什么是 Vue 实例方法

Vue 实例方法是指 Vue 实例上定义的方法,这些方法可以被组件调用,以实现特定的功能。
Vue 实例方法主要包括数据操作方法、事件处理方法、计算属性和生命周期方法等。

  1. 数据操作方法:Vue 实例方法中的数据操作方法用于操作 Vue 实例中的数据,如 get、set、$watch 等。

  2. 事件处理方法:Vue 实例方法中的事件处理方法用于处理 Vue 实例中的事件,如 $on、$off、$emit 等。

  3. 计算属性:Vue 实例方法中的计算属性用于根据其他属性计算出新的属性值,如 computed

  4. 生命周期方法:Vue 实例方法中的生命周期方法用于实现 Vue 实例的生命周期,如 beforeCreate、created、mounted、updated、destroyed 等。

下面是一个简单的 Vue 实例方法示例:

export default {
 data() {
   return {
     message: 'Hello, world!'
   }
 },
 methods: {
   sayHello() {
     console.log(this.message)
   }
 }
}

在这个示例中,我们定义了一个 Vue 实例,包含了一个 data 和一个 method。methods 中的 sayHello 方法可以被组件调用,实现输出 message 的功能。

Vue 实例方法是 Vue 组件中非常重要的部分,它们可以帮助开发者实现特定的功能,提高代码的复用性和可维护性。

展示如何在 Vue 组件中使用实例方法

当创建一个 Vue 组件时,你可以定义实例方法来处理组件的逻辑和行为。以下是一个示例,展示如何在 Vue 组件中使用实例方法:

首先,创建一个 Vue 组件模板 Component.vue

<template>
  <div>
    <button @click="handleClick">点击我</button>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  name: 'Component',
  methods: {
    handleClick() {
      this.message = '你点击了按钮!';
    },
  },
};
</script>

<style scoped>
/* Add your styles here */
</style>

在上述示例中,我们定义了一个名为 handleClick 的实例方法。当点击按钮时,该方法会被调用,并更新组件的 message 属性。

然后,在另一个组件中使用这个组件:

<template>
  <div>
    <Component />
  </div>
</template>

<script>
import Component from './Component.vue';

export default {
  components: {
    Component,
  },
};
</script>

<style scoped>
/* Add your styles here */
</style>

通过在另一个组件中引入并使用 Component 组件,你可以在应用中共享实例方法。

运行上述示例,你将看到一个按钮和一个显示消息的段落。当点击按钮时,消息将更新为 “你点击了按钮!”。

这只是一个简单的示例,你可以根据自己的需求在组件中定义更多的实例方法,并在组件的模板中调用它们。

三、常见的 Vue 实例方法

$data:访问和修改组件的数据

在 Vue 中,使用data属性来访问和修改组件的数据。通过在组件的选项中定义一个data对象,你可以在组件的模板中使用这些数据。

以下是一个示例,展示如何访问和修改组件的数据:

<template>
  <div>
    <h1>{{ title }}</h1>
    <button @click="changeTitle">修改标题</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      title: '默认标题',
    };
  },
  methods: {
    changeTitle() {
      this.title = '新标题';
    },
  },
};
</script>

<style scoped>
/* Add your styles here */
</style>

在这个示例中,我们定义了一个名为title的数据属性,并在模板中使用它来显示标题。通过点击按钮,我们可以调用changeTitle方法来修改title的数据值。

请注意,在组件中修改数据时,需要使用this关键字来引用当前组件的实例。此外,使用data属性定义的数据是响应式的,当数据发生变化时,模板会自动更新。

$watch:监听组件的数据变化

在 Vue 中,使用$watch方法可以监听组件的数据变化。$watch方法接受两个参数:要监听的属性名或表达式,以及一个回调函数。

以下是一个示例,展示如何使用$watch方法来监听组件的数据变化:

<template>
  <div>
    <h1>{{ title }}</h1>
    <button @click="changeTitle">修改标题</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      title: '默认标题',
    };
  },
  methods: {
    changeTitle() {
      this.title = '新标题';
    },
  },
  watch: {
    title(newValue, oldValue) {
      console.log('标题已更新,新值为:' + newValue);
    },
  },
};
</script>

<style scoped>
/* Add your styles here */
</style>

在这个示例中,我们使用$watch方法来监听title属性的变化。当title的值发生变化时,回调函数会被触发,并打印出更新后的标题。

请注意,$watch方法是一个通用的监听机制,它可以监听任何属性或表达式的变化。你可以根据需要监听不同的属性或表达式,并在回调函数中处理相应的逻辑。

$emit:触发组件的事件

在Vue中,使用$emit方法可以触发当前实例上的事件,通常用于子组件调用父组件方法,实现子组件主动与父组件进行通讯。

下面是一个示例,展示了如何使用$emit方法来触发事件:

<template>
  <div>
    <child-component @my-event="handleEvent"></child-component>
    <p>{{ message }}</p>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: { ChildComponent },
  data() {
    return { message: '' }
  },
  methods: {
    handleEvent(payload) {
      this.message = payload
    }
  }
}
</script>

在这个例子中,我们定义了一个名为ChildComponent的组件,它有一个按钮。当点击按钮时,会触发一个自定义事件my-event,并将payload参数传递给父组件的handleEvent方法。

$nextTick:在 DOM 更新后执行回调函数

$nextTick是Vue提供的一个方法,它的作用是将回调函数延迟到下次DOM更新周期之后执行。在修改数据之后立即使用它,然后等待DOM更新。

$nextTick接受一个回调函数作为参数,当DOM更新完成后,回调函数将会被调用。这个方法常用于在修改数据后立即操作DOM、在Vue生命周期钩子函数中执行必须在DOM更新后执行的操作,以及在自定义组件中操作子组件的DOM等场景。

下面是一个使用$nextTick的示例代码:

<template>
  <section>
    <h1 ref="hello" >{{ value }}</h1>
    <button type="default" @click="get">点击</button>
  </section>
</template>

<script>
export default {
  data() {
    return { value: 'Hello World ~' };
  },
  methods: {
    get() {
      this.value = '你好啊';
      console.log(this.$refs.hello.innerText);
      this.$nextTick(() => {
        console.log(this.$refs.hello.innerText);
      });
    }
  },
  created() { }
}
</script>

在这个例子中,当点击按钮时,会修改数据并打印出更新前的h1元素的文本内容。然后使用$nextTick方法,在更新完成后打印出更新后的h1元素的文本内容。

$mount:手动挂载组件

$mount方法用于手动挂载组件,将实例化后的 Vue 挂载到指定的 DOM 元素中。如果在实例化 Vue 的时候指定了el属性,则该 Vue 将会渲染在对应的 DOM 中;若没有指定el属性,则 Vue 实例会处于一种“未挂载”的状态,此时可以通过$mount方法来手动执行挂载。

需要注意的是,如果$mount方法没有提供参数,模板将被渲染为文档之外的元素,并且需要使用原生 DOM API 将其插入到文档中。

关于在 Vue 组件中使用$mount方法的更多信息,你可以查阅官方文档或相关教程。

$destroy:手动销毁组件

$destroy是 Vue 实例的一个方法,用于手动销毁组件。调用$destroy方法后,组件将停止运行,所有的事件监听器和子组件也会被解除,并且该组件在 DOM 中的绑定也会被移除。

下面是一个示例代码:

const vm = new Vue({
  el: '#app',
  data: {
    show: true
  },
  methods: {
    destroyComponent() {
      this.$destroy();
    }
  }
});

// 2 秒后手动销毁组件
setTimeout(() => {
  vm.destroyComponent();
}, 2000);

在这个示例中,创建了一个 Vue 实例,并在2秒后调用$destroy方法来手动销毁组件。

需要注意的是,$destroy方法通常不需要手动调用,因为在组件被移除或替换时,Vue 会自动调用该方法。只有在特殊情况下,例如需要在组件被移除之前释放资源或执行其他清理操作时,才需要手动调用$destroy方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1355544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习:贝叶斯估计在新闻分类任务中的应用(实验报告)

文章摘要 随着互联网的普及和发展&#xff0c;大量的新闻信息涌入我们的生活。然而&#xff0c;这些新闻信息的质量参差不齐&#xff0c;有些甚至包含虚假或误导性的内容。因此&#xff0c;对新闻进行有效的分类和筛选&#xff0c;以便用户能够快速获取真实、有价值的信息&…

几个有趣的go服务框架

开篇先吐槽几句&#xff5e; 我个人有一些习惯&#xff0c; 比如在服务设计时会考虑的比较长远&#xff0c;会考虑到到未来的扩展等等…然后程序设计的抽象成度就会比较高&#xff0c;各个模块之间解耦&#xff0c;但这样往往就会带来程序的复杂度提升。 这其实在一些公司里面…

LeetCode 2:两数相加

一、题目描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个…

Linux进程以及计划服务(二)

一.控制进程 前台运行&#xff1a;通过终端启动&#xff0c;且启动后一直占据终端&#xff08;影响当前终端的操作&#xff09; 后台运行&#xff1a;可通过终端启动&#xff0c;但启动后即转入后台运行&#xff08;不影响当前终端的操作&#xff09; 1.手动启动 前台启动&…

最优化理论期末复习笔记 Part 2

数学基础线性代数 从行的角度从列的角度行列式的几何解释向量范数和矩阵范数 向量范数矩阵范数的更强的性质的意义 几种向量范数诱导的矩阵范数 1 范数诱导的矩阵范数无穷范数诱导的矩阵范数2 范数诱导的矩阵范数 各种范数之间的等价性向量与矩阵序列的收敛性 函数的可微性与展…

Linux基础——进程初识(二)

1. 对当前目录创建文件的理解 我们知道在创建一个文件时&#xff0c;它会被默认创建到当前目录下&#xff0c;那么它是如何知道当前目录的呢&#xff1f; 对于下面这样一段代码 #include <stdio.h> #include <unistd.h>int main() {fopen("tmp.txt", …

2023 年最先进认证方式上线,Authing 推出 Passkey 无密码认证

密码并非是当前数字世界才有的安全手段。古今中外诸如故事中的《阿里巴巴与四十大盗》的“芝麻开门”口诀&#xff0c;或是江湖中“天王盖地虎&#xff0c;宝塔镇河妖”等传统的口令形式&#xff0c;都是以密码作为基本形态进行身份认证。然而&#xff0c;随着密码在越来越多敏…

ubuntu22.04配置双网卡绑定提升带宽

这里写自定义目录标题 Bonding简介配置验证参考链接 Bonding简介 bonding(绑定)是一种linux系统下的网卡绑定技术&#xff0c;可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡&#xff0c;能够提升网络吞吐量、实现网络冗余、负载均衡等功能&#xff0c;有很…

RTSP/Onvif安防平台EasyNVR接入EasyNVS显示服务不存在的原因及解决办法

EasyNVS云管理平台具备汇聚与管理EasyGBS、EasyNVR等平台的能力&#xff0c;可以将接入的视频资源实现统一的视频能力输出&#xff0c;支持远程可视化运维等管理功能&#xff0c;还能解决设备现场没有固定公网IP却需要在公网直播的需求。 有用户在现场部署EasyNVR&#xff0c;…

如何实现APP安全加固?加固技术、方法和方案

​ 本文我们着重分享App安全加固的相关内容。 ​ &#xff08;安全检测内容&#xff09; 通过前面的文章我们知道了app安全检测要去检测哪些内容&#xff0c;发现问题后我们如何去修复&#xff1f;如何避免安全问题&#xff1f;首先我们先来讲一下APP安全加固技术。 Ipa Guar…

【pdf密码】pdf文件如何限制编辑?

想要给PDF文件设置一个密码防止他人对文件进行编辑&#xff0c;那么我们可以对PDF文件设置限制编辑&#xff0c;设置方法很简单&#xff0c;我们在PDF编辑器中点击文件 – 属性 – 安全&#xff0c;在权限下拉框中选中【密码保护】 然后在密码保护界面中&#xff0c;我们勾选【…

SpringCloud Alibaba之Nacos配置中心配置详解

目录 Nacos配置中心数据模型Nacos配置文件加载Nacos配置 Nacos配置中心数据模型 Nacos 数据模型 Key 由三元组唯一确定&#xff0c;三元组分别是Namespace、Group、DataId&#xff0c;Namespace默认是公共命名空间&#xff08;public&#xff09;&#xff0c;分组默认是 DEFAUL…

22款奔驰GLE450升级香氛负离子 车载香薰

相信大家都知道&#xff0c;奔驰自从研发出香氛负离子系统后&#xff0c;一直都受广大奔驰车主的追捧&#xff0c;香氛负离子不仅可以散发出清香淡雅的香气外&#xff0c;还可以对车内的空气进行过滤&#xff0c;使车内的有害气味通过负离子进行过滤&#xff0c;达到车内保持清…

CentOS7部署Kafka

CentOS7部署Kafka 一、部署1、前置条件2、下载与解压3、修改配置4、启动kafka二、使用详解1、创建一个主题2、展示所有主题3、启动消费端接收消息4、生产端发送消息三、代码集成pom.xmlapplication.propertiesKafkaConfiguration.javaKafkaConsumer.javaKafkaProducer.javaVehi…

【算法挨揍日记】day34——647. 回文子串、5. 最长回文子串

647. 回文子串 647. 回文子串 题目描述&#xff1a; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&am…

MATLAB基本绘图操作(二维和三维绘图)

MATLAB基本绘图操作 文章目录 MATLAB基本绘图操作1、二维平面绘图1.1、线条&#xff08;折线图&#xff09;1.2、条形图1.3、极坐标图1.4、散点图 2、三维立体绘图2.1、三维曲面图2.2、三维曲线图&#xff08;点图&#xff09; 3、图片分区&#xff08;子图&#xff09; 1、二维…

【springboot项目】之秒杀项目常见问题(Seckill)

秒杀问题分为两部分&#xff1a;用户查看商品详情页、用户下单 项目简介&#xff1a; 模拟了高并发场景的商城系统&#xff0c;它具备秒杀功能&#xff0c;为了解决秒杀场景下的高并发问题。引入了 redis 作为缓存中间件&#xff0c;1.主要作用是缓存预热、预减库存等等。2.针…

简易五子棋的实现(C++)

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#xff09; 目录 一、效果图二、代码&#xff08;带注释&#xff09;三、说明 一、效果图 二、代码&#xff08;带…

获取CNN/DM适用于评估Bart的格式的数据集(类似于test.source、test.source.tokenized)

项目场景&#xff1a; 复现文本摘要任务评估CNN/DM数据集 问题描述 abisee老哥的代码获取的是bin格式的数据集 时间久远&#xff0c;一些依赖的配置版本难以复现 笔者需要能评估Bart 格式的数据集 形式类似于test.source、test.source.tokenized 解决方案&#xff1a; 经过坚…

确定转角起始扭矩值的方法有哪些

在预紧螺栓时&#xff0c;扭矩加角度法是一种常用的方法。这种方法需要确定转角起始扭矩值&#xff0c;以确保螺栓能够被正确地预紧。确定转角起始扭矩值的方法如下&#xff0c;SunTorque智能扭矩系统带大家一起了解。1. 确定螺栓规格和性能参数 在预紧螺栓之前&#xff0c;需要…