JSX 中 on 开头的属性名

在用 elementui 中的 el-upload 的时候,他们组件中有一个属性 on-change ,也不知道谁想出来的属性名,太扯淡了,非要 on 开头,我开始的代码如下:

<el-upload
action="/"
list-type="picture-card"
class="createopt__picupload"
auto-upload={false}
show-file-list={false}
file-list={cellValue}
accept=".gif,.png,.jpg,.jpeg"
on-change={this.createOptPicUploadChange}
>
<i class="el-icon-plus"></i>
</el-upload>

发现并不执行 createOptPicUploadChange 这个函数,看了一下编译后的代码,编译如下,居然把 on-change 编译到 on 里面去了,不正常,我要编译到 attrs 中才算正常啊

        "el-upload",
{
attrs: {
action: "/",
"list-type": "picture-card",
"auto-upload": false,
"show-file-list": false,
"file-list": cellValue,
accept: ".gif,.png,.jpg,.jpeg"
},
"class": "createopt__picupload",
on: {
"change": _this.createOptPicUploadChange
}
},

后来我看了一下 babel-plugin-transform-vue-jsx 中编译源码,发现了关键字 props|domProps|on|nativeOn|hook,居然有 on 开头的就编译成了函数,我就改成了 propsOn-change={this.createOptPicUploadChange},再看编译结果:

              "el-upload",
{
attrs: {
action: "/",
"list-type": "picture-card", "auto-upload": false,
"show-file-list": false,
"file-list": cellValue,
accept: ".gif,.png,.jpg,.jpeg"
},
"class": "createopt__picupload", props: {
"on-change": _this.createOptPicUploadChange
}
},

on-change 跑到 props 下了,再执行,成功。多看源码还是有好处的....

style 标签中深度作用选择器

以前就发现一个问题,当在 style 上加一个 scoped 的时候,子标签、孙子标签里面的样式就无法生效了,一直找不到解决方式,今天看文档找到了,在需要受影响的子标签或者是孙子标签的父标签后面加上 >>> 或者 /deep/,Scss 中无法解析 >>>。例如:

注意:选择器和 >>> 或者 /deep/ 之间有空格

.aaa /deep/ {
.bbb{ }
}

Vue 使用细节收集的更多相关文章

  1. Vue.js依赖收集

    写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:https://github.com/an ...

  2. 深入浅出Vue基于“依赖收集”的响应式原理(转)

    add by zhj: 文章写的很通俗易懂,明白了Object.defineProperty的用法 原文:https://zhuanlan.zhihu.com/p/29318017 每当问到VueJS ...

  3. css 细节收集

    细节1……………………………………………………………………………… 一.当文字与图片在一行,需要将文字与图片底对齐,需要这样写: <li>记住密码<img src="&qu ...

  4. vue经验 - 细节小知识点汇总(更新中...)

    1. $refs 数据这么绑定的: 然后在created中抛出来,猜猜看看打印的是两个什么? 结果如下: 第一个跑出来了,第二个,却undefiend,没有东西?!... 后来去官网查看$refs的解 ...

  5. vue的细节

    1.如果使用路由跳转到别的界面的话,例如从文章list页面跳转到具体文章查看详情页,查看某一个具体就需要传递那个文章的id去后台查询, this.$router.push的params方法可以实现传递 ...

  6. vue路由细节探讨

    1.使用router-link 不会让页面刷新,使用a标签会使页面刷新.2.router-link 里面的to="/路由地址" tag=""自定义标签" ...

  7. Vue依赖收集引发的问题

    问题背景 在我们的项目中有一个可视化配置的模块,是通过go.js生成canvas来实现的.但是,我们发现这个模块在浏览器中经常会引起该tab页崩溃.开启chrome的任务管理器一看,进入该页面内存和c ...

  8. 读Vue源码 (依赖收集与派发更新)

    vue的依赖收集是定义在defineReactive方法中,通过Object.defineProperty来设置getter,红字部分主要做依赖收集,先判断了Dep.target如果有的情况会执行红字 ...

  9. MVVM以及vue的双向绑定

    原文:https://www.cnblogs.com/onepixel/p/6034307.html MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核 ...

随机推荐

  1. Maven的下载与安装(Windows版本)

    前言: 安装Maven 3,需要安装jdk1.7及以上版本 具体步骤如下: 1.进入官网:http://maven.apache.org/download.cgi,如下图红框部分 其中: apache ...

  2. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

  3. LeetCode题解之Palindromic Substrings

    1.问题描述 2.问题分析 对于每一个字符,以该字符为中心计算回文个数. 3.代码 int countSubstrings(string s) { ; ) ; ; i < s.size(); i ...

  4. MyEclipse优化设置(最详细版本)

    MyEclipse优化设置由于自己需要,在网上查了相关资料,现在总结如下: 本优化方法较全,希望能帮助到需要的人... 第一步: 取消自动validation validation有一堆,什么xml. ...

  5. 误删mysql表物理文件的解决方法(不涉及恢复数据)

    该方法只介绍了如何救回这个表名(数据不恢复) 如果想要恢复原来数据 直接用extundelete把文件恢复后放回去即可 并且是适用于平时没有全备的情况下  如果有全备 直接那全备的frm和idb文件放 ...

  6. Percona MySQL5.7内存OOM案例导致重启的memory和thread分析

    前言 在一个阳光明媚的下午,电脑右下角传来一片片邮件提醒,同时伴随着微信钉钉的震动,打开一看,应用各种出错,天兔告警,数据库服务器内存爆红,Mysql数据库实例挂掉了. 排查 先交代一下数据库版本: ...

  7. linux访问Windows共享文件命令

    mount -o username=username,password=password,ip=10.0.0.1 //10.0.0.1/backupscm /home/package/image_vm ...

  8. VMware 导出镜像文件供 Virtual Box 使用

    1. 问题描述 Windows 系统安装的 VMware 里的安装配置好的虚拟机需要拷贝到 MAC 的 Virtual Box 中. 需要将 VMware 中的虚拟机导出为镜像文件供 Virtual ...

  9. chrome浏览器访问Google的插件“谷歌访问插件”以及常用插件

    1.解决新版谷歌浏览器无法从该网站添加应用.拓展程序和用户脚本 1.在Google Chrome浏览器的桌面快捷方式上鼠标右键,选择属性(R). 2. 在目标(T)后添加参数   --enable-e ...

  10. 获取QQ头像接口

    https://q4.qlogo.cn/g?b=qq&nk=QQ号码&s=140