哪些公司做网站,企业建站公司报价,环保设备网站怎么做,点开图片跳到网站怎么做react开发的时候#xff0c;引入热加载#xff0c;用了修饰器的引入方式#xff0c;发现了一个很有意思的问题#xff0c;网上并没有相关文章#xff0c;所以抛出来探讨下。 一段很简单的测试代码。但是经过babel编码后#xff0c;变得很有意思。假设编码成es2016#x… react开发的时候引入热加载用了修饰器的引入方式发现了一个很有意思的问题网上并没有相关文章所以抛出来探讨下。 一段很简单的测试代码。但是经过babel编码后变得很有意思。假设编码成es2016那么会是怎样的呢。 因为es6支持static静态方法但不支持静态属性导致属性被编码成CS.myNamekkkbut 关键的地方来了。。因为我们引入了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定义属性方法没问题。。毕竟谁也不支持会不会有什么其他东东包裹了我们的组件。