react开发的时候,引入热加载,用了修饰器的引入方式,发现了一个很有意思的问题,网上并没有相关文章,所以抛出来探讨下。

一段很简单的测试代码。但是经过babel编码后,变得很有意思。假设编码成es2016,那么会是怎样的呢。

因为es6支持static静态方法,但不支持静态属性,导致属性被编码成CS.myName='kkk'
but 关键的地方来了。。因为我们引入了@hot。。一切变得有意思,看看源码它做了什么

hot给Component包裹了几层,返回了一个新的component。。

重点来了。。。这就导致了一个很有意思的问题。

babel转码后,我们的静态属性同样挂载到了这个新的component上,这是babel的操作,无解,它已经不是原来的component了。 这就导致我们在里层的component中去调用 Cs.myName等静态属性就会报undefined。所以尽可能不使用静态属性,而是直接置顶用const变量代替。
不过幸好的是,静态方法是直接挂载到里面(原来)的component上的。所以我们能够正常访问得到,如Cs.show。

但同样会引发一个好奇,如果我转化成es5,不支持静态方法的话,那是不是也会导致静态方法丢失的问题呢。。为此我特意做了个试验。。
当当当。。。

忽略波浪线,是eslint报错。。。

发现没。。即便是es2015。转码后属性还是外层,不过方法依然是在里层实现的。并没有挂载的外层,_createClass这个方法做了处理的

我们定义的show和hide当做staticProps传进去了。

总结了。。虽然是引入了@hot导致的问题,但还是尽量不要使用static定义属性(方法没问题)。。毕竟谁也不支持会不会有什么其他东东包裹了我们的组件。

@hot热加载修饰器导致static静态属性丢失(已解决)相关推荐

  1. IDEA-jetty热加载(类文件和静态资源)

    一.场景: 1.实际项目开发.调试阶段,重新打包部署影响效率,热部署.热加载可以提高效率: 2.IDEA在running/debugging状态下没有自动编译的选项: 二.Jetty的maven插件: ...

  2. 为什么 NGINX 的 reload 命令不是热加载?

    这段时间在 Reddit 看到一个讨论,为什么 NGINX 不支持热加载?乍看之下很反常识,作为世界第一大 Web 服务器,不支持热加载?难道大家都在使用的 nginx -s reload 命令都用错 ...

  3. ik mysql热加载分词_Elasticsearch 之(25)重写IK分词器源码来基于mysql热更新词库...

    热更新在上一节< IK分词器配置文件讲解以及自定义词库>自定义词库,每次都是在es的扩展词典中,手动添加新词语,很坑 (1)每次添加完,都要重启es才能生效,非常麻烦 (2)es是分布式的 ...

  4. 查看类的实现类mac_自定义类加载器实现热加载

    一.实现的需求 当一个java被修改后,系统无需重启,替换的类立即生效,这里以Work.java为例 二.实现的思路 1)难点分析 当项目在执行的时候,我们修改了Work.java,这个类的class ...

  5. ELK系列(十)、ES中文分词器IK插件安装和配置远程词库热加载

    简介 IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包: 最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件:从 3.0 版本开始 ...

  6. SpringBoot热加载实现与类加载浅谈

    SpringBoot热加载实现与类加载浅谈 热部署与热加载: 热部署和热加载都是基于类加载器实现的,热加载是服务器监听class等文件的改变然后对改变的文件进行局部加载,所以不会删除session,也 ...

  7. java热加载_java--热加载

    1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...

  8. java中的saturn_saturn java 热加载(一)

    背景: 每次启用都要重启executor,在此之前还要确保该executor下没有任务在执行,很麻烦 方案: 将不常更换的公共包放在executor classpath下,仍然由saturn加载 将常 ...

  9. jar包 热加载/卸载 的初步实现

    这两天做的项目中按照客户要求需要将插件模式应用到本项目中,以达到客户可以自己动态增加相关功能的目的,然后我们就根据需求制定出接口,再由客户自己实现接口,通过项目提供的相应界面将实现的jar包上传,由服 ...

最新文章

  1. 微信为什么不丢消息?
  2. 命令行请求jsp页面_JSP 之 8种HTTP的请求方式 之 页面组成等
  3. NCC Meetup 2018 Shanghai 活动小结
  4. 越老越值钱,除了程序员!
  5. python转cpp_python转c工具
  6. 【数学基础】最小二乘法
  7. Hash类的键值对允不允许为空的问题
  8. Proc恢复数据文件
  9. Codeforces 374A - Inna and Pink Pony
  10. linux搭建dlna媒体服务器,Serviio:一款功能强大的DLNA媒体服务器软件
  11. 使用Echarts在前端页面绘制地图
  12. 特网云 DirectAdmin 安装SSL
  13. 共阴数码管C语言单片机,51单片机直接驱动共阴极数码管
  14. 1032:大象喝水 题解 信息学奥赛 NOIP
  15. 国外 PhD 多读几年有哪些利弊?
  16. 宝塔linux_开源、强大的Linux服务器集群管理工具,比宝塔好用!
  17. 读《男子为让孩子成为北京人执意找京籍女结婚(图)》有感——致北漂的XDJM
  18. Transformer-XL
  19. python太阳花代码_python太阳花绘制代码教程
  20. 下载Xcode 历史版本

热门文章

  1. Python程序可打印今天的年,月和日
  2. 输入一字符串,统计其中有多少个单词(单词之间用空格分隔)(java)
  3. mysql 函数重载_[赋值]函数,变量,重载 ,_第1页_169IT
  4. Ubuntu14.04设置开机可以以root用户身份登录
  5. 字体外面怎么加边框_有钱人家连电视墙都发“光”,大理石墙周围加一圈镜面边框,华丽...
  6. uva 10883——Supermean
  7. 122. 买卖股票的最佳时机 II golang
  8. linux网路编程之多进程并发服务器
  9. 计算机网络【1】物理层
  10. 用C语言操作MySQL数据库