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文件优化
Dec 08 Javascript
再谈javascript面向对象编程
Mar 18 Javascript
javascript返回顶部效果(自写代码)
Jan 06 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
Jquery zTree 树控件异步加载操作
Feb 25 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 Javascript
javascript中json基础知识详解
Jan 19 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
May 08 Javascript
vue项目中添加单元测试的方法
Jul 21 Javascript
JavaScript学习教程之cookie与webstorage
Jun 23 Javascript
vue-froala-wysiwyg 富文本编辑器功能
Sep 19 Javascript
微信小程序tabBar设置实例解析
Nov 14 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
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
详解用python写一个抽奖程序
2019/05/10 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python不同版本的_new_不同点总结
2020/12/09 Python
销售顾问岗位职责
2014/02/25 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
六五普法宣传标语
2014/10/06 职场文书
如何写好开幕词?
2019/06/24 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis