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 miscellanea -display data real time, using window.status
Jan 09 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
Aug 27 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
Apr 01 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
Dec 15 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 Javascript
Vue from-validate 表单验证的示例代码
Sep 26 Javascript
详解使用Next.js构建服务端渲染应用
Jul 10 Javascript
微信小程序如何调用图片接口API并居中显示
Jun 29 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 Javascript
编写一个javascript元循环求值器的方法
Apr 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
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
javascript 继承实现方法
2009/08/26 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
面包屑导航详解
2017/12/07 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
详解Python中的strftime()方法的使用
2015/05/22 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
numpy自动生成数组详解
2017/12/15 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
学习python的前途 python挣钱
2019/02/27 Python
python批量解压zip文件的方法
2019/08/20 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
为什么是 Python -m
2020/06/19 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
副职竞争上岗演讲稿
2014/05/12 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
办公室岗位职责
2015/02/04 职场文书
签证工作证明模板
2015/06/15 职场文书
赡养老人协议书范本
2015/08/06 职场文书
外科护士长工作总结
2015/08/12 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
聘任书的格式及模板
2019/10/28 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript