vue获取组件实例

这篇具有很好参考价值的文章主要介绍了vue获取组件实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue获取组件实例

选项式获取组件实例

在选项式中可以直接通过this来获取组件实例,通过this来访问实例对象的各种方法

//该组件实例管理的 DOM 根节点。
this.$el
//表示组件当前已解析的 props 对象。
this.$props
//数据
this.$data
//父组件实例
this.$parent
//根组件实例
this.$root
//插槽对象
this.$slots
//一个包含 DOM 元素和组件实例的对象
this.$refs
//其他属性:https://cn.vuejs.org/api/component-instance.html

组合式中获取组件实例

在组合式用,代码都写在setup函数中,无法通过this获取组件实例,需要通过getCurrentInstance()方法,getCurrentInstance()获取的实例对象和选项式获取组件实例不同

<script lang='ts'>
import { defineComponent,getCurrentInstance} from 'vue';
export default defineComponent({
    setup(props, { attrs, slots, emit, expose }) {
        const instance = getCurrentInstance()
    }
})
</script>
和选项式相同的含$的实例对象

在选项式中的实例的属性都含$符号,在组合式中需要通过proxy这个对象来获取选项式中的实例,也就是说选项式中的实例对象在组合式中,属于是组合式实例对象的proxy成员变量

const instance = getCurrentInstance()
const proxy = instance.proxy

//该组件实例管理的 DOM 根节点。
proxy.$el
//表示组件当前已解析的 props 对象。
proxy.$props
//数据
proxy.$data
//父组件实例
proxy.$parent
//根组件实例
proxy.$root
//插槽对象
proxy.$slots
//一个包含 DOM 元素和组件实例的对象
proxy.$refs
//其他属性:https://cn.vuejs.org/api/component-instance.html

//true
console.log(instance.parent.proxy == instance.proxy.$parent);
实例对象的ctx属性问题

在组合式中实例的ctx属性在生产环境中是无法获取的,也就是说,想获取上下文对象,应该在setup函数中获取

错误做法

//开发环境能获取,但在生产中ctx为空
const { ctx } = getCurrentInstance()   //×

正确做法

setup(props,ctx){}
getCurrentInstance被标记为non-public APIs

https://github.com/vuejs/docs/issues/1422,尽管getCurrentInstance是非公开API但是你依旧可以使用它,因为它是内部实例,在你开发vue组件库时依旧可以使用。

在vue的官方文档中找不到getCurrentInstance(),是因为这方法是内部方法

Because the instance is an internal instance that exposes non-public APIs. Anything you use from that instance can technically break between any release types, since they are not subject to semver constraints.

I’m not sure why you need the setup context in nested composables, but explicitly passing arguments to composables make then less coupled to the consuming component, thus easier to understand and test in isolation.

In general a library designed to work with Composition API should expose special variables via its own composables (e.g. useRoute from vue-router) instead of the requiring the user to grab it from the instance.文章来源地址https://www.toymoban.com/news/detail-467618.html

到了这里,关于vue获取组件实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 组件中写选项的顺序(vue的问题)

    为什么选项要有统一的书写顺序呢?很简单,就是要将选择和认知成本最小化。 副作用  (触发组件外的影响) el 全局感知  (要求组件以外的知识) name parent 组件类型  (更改组件的类型) functional 模板修改器  (改变模板的编译方式) delimiters comments 模板依赖  (模板内使用的资源

    2024年01月18日
    浏览(30)
  • 微信小程序---组件通信---使用selectComponent获取组件实例

    子组件component wxml js 一.通过父页面增加子组件的数据值 父页面page wxml js 二.通过父页面调用子组件的方法

    2024年02月11日
    浏览(61)
  • react通过ref获取函数子组件实例方法

    在react16之后带来了hooks之后,确实方便了很多组件开发,也加快了函数式编程的速度,但是当你通过useRef获取子组件的时候,又恰好子组件是一个函数组件,那么将会报一个错误:报这个错误的主要原因是函数组件没有实例对象,所以你没办法通过ref获取子组件实例  Warnin

    2024年02月11日
    浏览(37)
  • 前端Vue自定义可自由滚动新闻栏tabs选项卡标签栏标题栏组件

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(48)
  • unity 之 GetComponent 获取游戏对象上组件实例方法

    GetComponent 是Unity引擎中用于获取游戏对象上组件实例的方法。它允许您从游戏对象中获取特定类型的组件,以便在脚本中进行操作和交互。 GetComponent ComponentType (): 这是一个泛型方法,用于从当前游戏对象上获取指定类型的组件。在 ComponentType 部分,您应该提供您想要获取的

    2024年02月02日
    浏览(46)
  • React 使用 useRef() 获取循环中所有子组件实例

    之前项目中使用了 antd pro 中的 可编辑表格 (EditableProTable) ,在页面中表格要经过多层遍历后组成的新页面,所以我将之抽成了一个公用的组件,另外在遍历的最外层需要通过一个按钮统一提交表格数据,但是提交数据之前需要对每一个表格进行非空校验。 遍历中引入组件这

    2024年02月11日
    浏览(32)
  • 前端Vue自定义商品订单tabs标题栏选项卡组件 可设置文字下划线颜色

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(43)
  • [Vue3 博物馆管理系统] 使用Vue3、Element-plus tabs组件构建选项卡功能

    第一章 定制上中下(顶部菜单、底部区域、中间主区域显示)三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 第三章 使用Vue3、Element-plus走马灯组件构建轮播图 第四章 使用Vue3、Element-plus tabs组件构建选项卡功能 [第五章 使用Vue3、Element-plus菜单组件构建组图文章

    2024年02月09日
    浏览(65)
  • vue通过js代码实例化组件

    最近在写项目的一些公共组件(一些选择器),很多个地方都需要用,所以在main.js全局声明了,但发现子页面调用还是有挺多的地方需写。 例如,要在template实例化组件,并用ref绑定,然后在js里的methods里写方法。 main.js 声明全局组件 第一种方案 一开始想到的是用ref绑定组

    2024年02月08日
    浏览(37)
  • Vue组件滚动加载、懒加载功能的实现,无限滚动加载组件实例演示

    效果图如下: 可以看到随着不断的滚动,页面组件的数量不断的加载。 其实加载的是后端返回的数据,因为涉及隐私,没有给显示出来。 利用懒加载,可以防止大量渲染造成卡顿降低用户体验。 页面的动态加载这块可以看上一篇文章: Vue 动态添加和删除组件的实现,子组

    2024年02月01日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包