Vue 子组件使用 this.$parent 无法访问到父组件数据和方法

这篇具有很好参考价值的文章主要介绍了Vue 子组件使用 this.$parent 无法访问到父组件数据和方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  • 最近在使用父子组件时候,通过this.$parent访问父组件数据和方法,出现undefined的情况。

  • 实际场景是父组件有一个dialog弹出框,包含几个子组件form表单,根据标识只展示一个子组件。

  • 在子组件需要传递一个ID给父组件中的data数据,想到this.$parent(比较简便),不想用this.$emit。

  • 但发现this.$parent 实例是有打印的,但是访问父组件数据和方法都是undefined的情况

解决思路

  • 后面对着this.$parent 实例一顿找,发现根本就没有父组件的数据和方法,并不是父组件的实例。

  • 因为在子组件外面包了一层dialog弹出框,所以this.$parent是element实例,this.$parent.$parent是父组件实例,

  • 子组件在<template></template>没有任何包裹时通过this.$parent可以直接访问到数据方法

  • 子组件用了dialog弹出框包裹时通过this.$parent.$parent访问数据和方法(具体看实际情况包了几层)

代码实例

// 没有任何包裹是子组件访问父组件
const parent = this.$parent
// 访问数据
parent.数据
// 访问方法
parent.方法
​
// 子组件被包裹时(比如dialog弹出框包裹时)
const parent = this.$parent.$parent
// 访问数据
parent.数据
// 访问方法
parent.方法

总结:

经过这一趟流程下来相信你也对 Vue 子组件使用 this.$parent 无法访问到父组件数据和方法 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

什么不足的地方请大家指出谢谢 -- 風过无痕文章来源地址https://www.toymoban.com/news/detail-508048.html

到了这里,关于Vue 子组件使用 this.$parent 无法访问到父组件数据和方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue3父组件访问子组件数据 defineExpose用法

    在Vue3中,父组件可通过创建一个ref(null),然后将赋值的元素写在当前子组件上即可,在需要的时候,通过定义的响应式变量即可获取,获取后即可取得当前子组件内部dom以及当前子组件内部变量方法等,并且直接使用子组件内部方法。但是有时候获取的时候返回的没有什么信

    2024年02月12日
    浏览(35)
  • vue3子组件数据无法更新

    在写vue3代码时,遇到了父组件传值给子组件,但是子组件无法及时刷新数据,父组件数据是异步获取的。 使用了很多方法,froceUpdate(),nextTick之类的方法都试过了没有生效。 所以需要在父组件对子组件进行刷新。 解决思路: 利用vue diff算法的特点,更新key,强制使子组件刷

    2024年02月12日
    浏览(33)
  • uniapp中u-switch子组件点击触发到父组件(阻止事件冒泡)

    解决方法:在u-switch 外面包一个view标签,并使用@tap.stop.prevent 可以阻止事件冒泡 .stop 阻止事件继续传播到父元素,prevent阻止事件默认行为 知识点补充: 1.事件冒泡:当一个元素的事件被触发时,会沿着父元素向上传递,直到根元素 2. 阻止事件冒泡常用的事件修饰符: .st

    2024年01月21日
    浏览(53)
  • uni-app使用vue3,在元素或组件实例上添加ref,用this.$refs显示undefined

    项目中引用了一个UI组件库,在表单上添加了`ref`属性,方便提交时验证。触发提交方法时显示不存在这个方法或this.$refs为undefined。 解决方法: 引入`getCurrentInstance`,t得到当前组件实例,然后用`ctx.$refs`代替`this.$refs`。这里的`ctx`相当于全局this。 ------------------ 2023/10/27更新-

    2024年02月07日
    浏览(40)
  • Vue父组件调用子组件方法this.$refs用法

    1. 介绍 2.父组件调用子组件的方法 2.1.父组件 代码删除了一部分,可能复制会报错 2.2.子组件 3.效果 点击弹窗修改框

    2024年02月07日
    浏览(27)
  • Vue3 在vite中运行无法使用外部ip访问

    使用vite创建的vue项目运行时,只能使用localhost(127.0.0.1)访问,如果使用外部ip,提示使用–host参数,可使用npm run dev --host,不起作用,在host后增加0.0.0.0也不起作用。需要运行npx vite --host 0.0.0.0。还有一个办法,就是在vite.config.js中增加配置server:

    2024年02月16日
    浏览(34)
  • Vue子组件向父组件传值(this.$emit()方法)

    首先必须在父组件中引用子组件,然后实现传值 第一步 在父组件中引入子组件 使用import引入组件 声明 使用 第二步 子组件向父组件传值 1.  在子组件中需要向父组件传值处使用this.$emit(\\\"function\\\",param);    //其中function为父组件定义函数,param为需要传递参数 2.  在父组件中子

    2024年02月10日
    浏览(24)
  • vue3 组合式api中 ref 和$parent 的使用

    ref 的使用 vue3中, 在 组件中添加一个 component ref=“xxx” ,就可以在父组件中得到 子组件的 dom 对象, 以及 虚拟的 dom 对象, 有了虚拟 dom, 我们就可以在父组件中控制子组件的显示了 ref 的使用方法 vue3中ref 的特点 以上如果在vue2中,就可以使用 子组件的对象来改变子组件的

    2024年02月10日
    浏览(34)
  • 【Vue3】手机访问vue项目 || 手机无法访问vue项目 || 手机无法访问vue项目解决方法

    手机 端访问电脑端开发的项目。 手机与电脑连接同一个WiFi(或手机开热点给电脑连),保证手机与电脑在同一局域网。 找到 vue3 的配置文件 - package.json (我这里用的是vite+vue3) 找到dev配置项,输入 –host 0.0.0.0 ,代码如下 图片演示 npm run dev 运行项目,访问Network地址 ,如下图

    2024年02月16日
    浏览(33)
  • Vue组件使用(父组件监听子组件数据变化,子组件使用父组件的数据,并监听父组件的数据变化)

    父组件声明变量 父组件向子组件传递数据 Vue 数据类型 type 有以下几种: String:字符串类型。例如:“hello world”。 Number:数字类型。例如:12,1.5。 Boolean:布尔类型。例如:true,false。 Object:对象类型。例如:{name: ‘Tom’, age: 20}。 Array:数组类型。例如:[1, 2, 3]。 Fun

    2024年02月14日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包