vue单文件组件无法获取$refs的问题


Posted in Javascript onJune 24, 2020

记录一下学习webpack+vue碰到的一个大坑,踩这个坑是我才疏学浅的表现,特此引以为戒。因为该坑实在是太坑了!

代码

header.html

<body>
  <div id="popup-wrap">
    <popup ref="popup"></popup>
  </div>
</body>

header.js

import popup from '../../components/popup/popup.vue'
import './header.scss'

let header_vue;
$(function () {
  header_vue = new Vue({
    el: '#popup-wrap',
    data: {
    },
    mounted: {
      // 输出为{popup: VueComponent}
      console.log(this.$refs);
    }
    components: {popup},
    methods: {
      pop_data: function () {
        // 输出为{}
        console.log(this.$refs);
      }
    }
  });
});
export {header_vue}

other.js

import {header_vue} from "../header/header";

$(function () {
  header_vue.pop_data()
});

popup.vue是一个普通的弹窗组件。我在header.js中引入该组件,并实例化一个header_vue使用了popup组件,然后在other.js中引入header_vue试图使用pop_data函数,该函数仅输出header_vue的$refs,经测试,该函数输出为一个空的对象,但是mounted钩子正常输出。
我就很纳闷,为啥mounted输出正常,函数调用就成空的了呢,Vue也已经挂载完成了啊。

resolve

一番气急败坏的debug后,在header.js的$(function())加上了一句console.log('ok'),结果浏览器输出了俩ok。短时间大脑的高速运转后,我发现了问题的所在:

webpack打包了两遍header.js!
所以解决的办法就是把header_vue = new Vue()改成window.header_vue = new Vue()。别处直接用就行了。

尾话

目前没搞清楚具体的bug出现原因,正常使用webpack多次引入同一个export也没有出现过此问题。但是肯定是我没学明白,有大牛知道的话麻烦解答解答。

到此这篇关于vue单文件组件无法获取$refs的问题的文章就介绍到这了,更多相关vue单文件无法获取$refs 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript-TreeView父子联动效果保持节点状态一致
Aug 12 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
Apr 23 Javascript
关于js遍历表格的实例
Jul 10 Javascript
jQuery DOM操作实例
Mar 05 Javascript
jquery scroll()区分横向纵向滚动条的方法
Apr 04 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
Mar 20 Javascript
ES6中的数组扩展方法
Aug 26 Javascript
不间断循环滚动效果的实例代码(必看篇)
Oct 08 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 Javascript
js获取css的各种样式并且设置他们的方法
Aug 22 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
Mar 09 Javascript
Node.js创建一个Express服务的方法详解
Jan 06 Javascript
JS实现数据动态渲染的竖向步骤条
Jun 24 #Javascript
javascript实现评分功能
Jun 24 #Javascript
javascript实现移动端红包雨页面
Jun 23 #Javascript
JS实现canvas简单小画板功能
Jun 23 #Javascript
javascript+Canvas实现画板功能
Jun 23 #Javascript
vue.js实现照片放大功能
Jun 23 #Javascript
vue实现点击按钮切换背景颜色的示例代码
Jun 23 #Javascript
You might like
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
PHP函数超时处理方法
2016/02/14 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
javascript eval和JSON之间的联系
2009/12/31 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
python读取各种文件数据方法解析
2018/12/29 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
django框架两个使用模板实例
2019/12/11 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
党建示范点实施方案
2014/03/12 职场文书
房屋转让协议书范本
2014/04/11 职场文书
关于诚信的活动方案
2014/08/18 职场文书
校园广播稿100字
2014/10/06 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
我的收音机情缘
2022/04/05 无线电