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对下拉列表框(select)的操作实例讲解
Nov 29 Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
Javascript中this关键字的一些小知识
Mar 15 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
Nov 07 Javascript
详解node+express+ejs+bootstrap构建项目
Sep 27 Javascript
详解如何使用 vue-cli 开发多页应用
Dec 16 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
Jul 27 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
Oct 11 Javascript
js防抖和节流的深入讲解
Dec 06 Javascript
Vue的click事件防抖和节流处理详解
Nov 13 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
Oct 28 Javascript
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
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
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
laravel自定义分页效果
2017/07/23 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
介绍一下Linux中的链接
2016/05/28 面试题
土木工程专业自荐信
2013/10/04 职场文书
历史学专业推荐信
2013/11/06 职场文书
毕业自我鉴定范文
2013/11/06 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
上班玩手机检讨书
2014/02/17 职场文书
经理聘任证明
2015/03/02 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
课改心得体会范文
2016/01/25 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
Pandas数据类型之category的用法
2021/06/28 Python
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS