当前位置: 首页 > news >正文

Vue 2 中 Vue 实例对象(vm)的所有核心方法,包含完整示例、使用说明及对比表格

以下是 Vue 2 中 Vue 实例对象(vm)的所有核心方法,包含完整示例、使用说明及对比表格:
在这里插入图片描述


1. $mount()

作用:手动挂载 Vue 实例到 DOM 元素
参数

  • element:DOM 元素或选择器字符串(可选)
    示例
// 创建实例但不自动挂载
const vm = new Vue({template: '<div>{{ message }}</div>',data: { message: 'Hello Vue!' }
});// 手动挂载到 #app 元素
vm.$mount('#app');

2. $destroy()

作用:销毁 Vue 实例,停止监听和事件
参数:无
示例

const vm = new Vue({ ... });
vm.$destroy(); // 销毁后实例不再响应数据变化

3. $on(eventName, callback)

作用:监听自定义事件
参数

  • eventName:事件名称(字符串)
  • callback:回调函数
    示例
vm.$on('custom-event', (data) => {console.log('Received:', data);
});// 触发事件
vm.$emit('custom-event', 'Hello!');

4. $once(eventName, callback)

作用:监听一次事件后自动移除
参数:同 $on
示例

vm.$once('once-event', (data) => {console.log('Only once:', data);
});vm.$emit('once-event', 'Triggered!'); // 只执行一次
vm.$emit('once-event', 'Again');      // 不再触发

5. $off(eventName, callback)

作用:移除事件监听
参数

  • eventName:事件名称(字符串)
  • callback:要移除的回调(可选)
    示例
const handler = () => console.log('Event triggered');
vm.$on('remove-event', handler);
vm.$off('remove-event', handler); // 移除特定回调
vm.$off();                        // 移除所有事件

6. $emit(eventName, ...args)

作用:触发自定义事件
参数

  • eventName:事件名称
  • ...args:传递给回调的参数
    示例
vm.$emit('custom-event', 'Hello', 123); // 触发事件并传递参数

7. $watch(expression, callback)

作用:监听数据变化
参数

  • expression:要监听的表达式(如 data.key
  • callback(newVal, oldVal):数据变化时的回调
    示例
vm.$watch('count', (newVal, oldVal) => {console.log(`Count changed from ${oldVal} to ${newVal}`);
});vm.count = 5; // 触发回调

8. $set(target, key, value)

作用:向响应式对象添加新属性
参数

  • target:目标对象
  • key:属性名
  • value:属性值
    示例
vm.$set(vm.obj, 'newKey', 'newValue'); // 确保响应式更新

9. $delete(target, key)

作用:删除响应式对象的属性
参数:同 $set
示例

vm.$delete(vm.obj, 'oldKey'); // 安全删除属性

10. $nextTick(callback)

作用:DOM 更新后执行回调
参数

  • callback:DOM 更新后的回调
    示例
vm.message = 'Updated'; // 触发数据变化
vm.$nextTick(() => {console.log(vm.$el.textContent); // 获取更新后的 DOM
});

11. $forceUpdate()

作用:强制重新渲染组件(即使数据未变化)
参数:无
示例

vm.$forceUpdate(); // 强制重新渲染

对比表格总结

方法作用参数返回值示例简写
$mount手动挂载实例element: string/HTMLElement (可选)Vue 实例vm.$mount('#app')
$destroy销毁实例vm.$destroy()
$on监听事件eventName: string, callback: FunctionVue 实例vm.$on('event', () => {...})
$once监听一次事件eventName: string, callback: FunctionVue 实例vm.$once('event', () => {...})
$off移除事件监听eventName: string, callback: Function (可选)Vue 实例vm.$off('event', handler)
$emit触发事件eventName: string, ...argsVue 实例vm.$emit('event', data)
$watch监听数据变化expression: string, callback: Functionunwatch 函数vm.$watch('key', (newVal, oldVal) => {...})
$set安全添加响应式属性target: Object, key: string, value: any被添加的值vm.$set(vm.obj, 'newKey', 'value')
$delete安全删除响应式属性target: Object, key: stringvm.$delete(vm.obj, 'oldKey')
$nextTickDOM 更新后执行回调callback: FunctionPromise (Vue 2.4+)vm.$nextTick(() => { ... })
$forceUpdate强制重新渲染组件vm.$forceUpdate()

关键差异对比

方法作用范围数据/功能影响典型场景
$mount实例挂载控制挂载目标手动挂载到特定 DOM 元素
$destroy实例生命周期完全销毁实例清理资源或移除组件
o n / on/ on/once/$off事件监听与管理灵活管理自定义事件跨组件通信或动态事件监听
$emit触发事件触发其他组件或父组件的事件组件间通信(替代 props 钉扎)
$watch数据监控监听特定数据变化复杂逻辑依赖数据变化时触发操作
s e t / set/ set/delete响应式数据操作确保新增/删除属性的响应性动态操作对象属性时避免丢失响应性
$nextTickDOM 更新时机确保在 DOM 更新后执行代码操作更新后的 DOM 结构
$forceUpdate强制渲染跳过 Vue 的响应式检测手动触发渲染(如外部 DOM 变化后)

使用建议

  1. 事件系统:优先使用 $on/$emit 实现组件间通信,但避免过度依赖全局事件。
  2. 数据监听:用 $watch 处理复杂依赖,但注意内存泄漏(需在销毁时调用 unwatch)。
  3. 响应式操作:始终用 $set/$delete 操作对象属性,避免直接 obj.key = value
  4. DOM 操作:用 $nextTick 确保 DOM 更新完成后再操作,替代 setTimeout
  5. 组件销毁:在 Vue 生命周期钩子(如 beforeDestroy)中清理资源。

如果需要更具体场景的代码示例或深入解释,请进一步说明!

http://www.xdnf.cn/news/202213.html

相关文章:

  • 【Java】 使用 HTTP 响应状态码定义web系统返回码
  • 继承(c++版 非常详细版)
  • linux 环境下 c++ 程序打印 core dump 信息
  • 滑动窗口模板
  • 【基础知识】常见的计算公式(一)
  • java借助NIO、链表、跳表模拟实现redis
  • CDGP|如何建立高效的数据治理团队?
  • 【强化学习系列】贝尔曼方程
  • mysql模糊多次OR查询某一个字段,针对这个字段进行查询分组
  • Marin说PCB之----板材的替换注意事项
  • vite创建vue3项目并进行配置
  • DIFY教程第三弹:构建一个智能生成图片的Agent
  • 【分布式系统中的“瑞士军刀”_ Zookeeper】三、Zookeeper 在实际项目中的应用场景与案例分析
  • openGauss DB4AI与scikit-learn模块对比探究
  • 基于强化学习的用于非刚性图像配准的引导式超声采集|文献速递-深度学习医疗AI最新文献
  • HTML标记语言_@拉钩教育【笔记】
  • 座舱系统香氛模块概念
  • 【Linux】第十一章 管理网络
  • COMEM光纤温度传感器Optocon:可靠稳定的温度监测方案
  • 2025三掌柜赠书活动第十五期:高并发系统:设计原理与实践
  • 跨语言哈希一致性:C# 与 Java 的 MD5 之战?
  • PHP经验笔记
  • 大模型相关问题解答
  • 记一次奇妙的Oracle注入绕WAF之旅
  • vue-router: vue3路由管理器
  • 新时代下的存储过程开发实践与优化
  • AI大模型入门指南——概念篇
  • 语音合成之九注意力机制在TTS中的应用:让模型“听懂”文本
  • 从零开始学AI教程 初学者入门指南
  • 推荐私有化部署的企业内部通讯软件BeeWorks