摘要:轉(zhuǎn)碼后,我們的靜態(tài)屬性同樣掛載到了這個新的上,這是的操作,無解,它已經(jīng)不是原來的了。這就導(dǎo)致我們在里層的中去調(diào)用等靜態(tài)屬性就會報。所以盡可能不使用靜態(tài)屬性,而是直接置頂用變量代替。
react開發(fā)的時候,引入熱加載,用了修飾器的引入方式,發(fā)現(xiàn)了一個很有意思的問題,網(wǎng)上并沒有相關(guān)文章,所以拋出來探討下。
一段很簡單的測試代碼。但是經(jīng)過babel編碼后,變得很有意思。假設(shè)編碼成es2016,那么會是怎樣的呢。
因為es6支持static靜態(tài)方法,但不支持靜態(tài)屬性,導(dǎo)致屬性被編碼成CS.myName="kkk"
but 關(guān)鍵的地方來了。。因為我們引入了@hot。。一切變得有意思,看看源碼它做了什么
hot給Component包裹了幾層,返回了一個新的component。。
重點來了。。。這就導(dǎo)致了一個很有意思的問題。
babel轉(zhuǎn)碼后,我們的靜態(tài)屬性同樣掛載到了這個新的component上,這是babel的操作,無解,它已經(jīng)不是原來的component了。 這就導(dǎo)致我們在里層的component中去調(diào)用 Cs.myName等靜態(tài)屬性就會報undefined。所以盡可能不使用靜態(tài)屬性,而是直接置頂用const變量代替。
不過幸好的是,靜態(tài)方法是直接掛載到里面(原來)的component上的。所以我們能夠正常訪問得到,如Cs.show。
但同樣會引發(fā)一個好奇,如果我轉(zhuǎn)化成es5,不支持靜態(tài)方法的話,那是不是也會導(dǎo)致靜態(tài)方法丟失的問題呢。。為此我特意做了個試驗。。
當(dāng)當(dāng)當(dāng)。。。
忽略波浪線,是eslint報錯。。。
發(fā)現(xiàn)沒。。即便是es2015。轉(zhuǎn)碼后屬性還是外層,不過方法依然是在里層實現(xiàn)的。并沒有掛載的外層,_createClass這個方法做了處理的
我們定義的show和hide當(dāng)做staticProps傳進(jìn)去了。
總結(jié)了。。雖然是引入了@hot導(dǎo)致的問題,但還是盡量不要使用static定義屬性(方法沒問題)。。畢竟誰也不支持會不會有什么其他東東包裹了我們的組件。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96227.html
摘要:虛擬機(jī)為了保證一個類的方法在多線程環(huán)境中被正確地加鎖同步。但啟動類加載器不可能認(rèn)識這些代碼。實現(xiàn)模塊化熱部署的關(guān)鍵則是它的自定義類加載器機(jī)制的實現(xiàn)。 概念區(qū)分:加載、類加載、類加載器 類加載是一個過程。 加載(Loading)是類加載這一個過程的階段。 類加載器是ClassLoader類或其子類。 本文中的類的描述都包括了類和接口的可能性,因為每個Class文件都有可能代表J...
摘要:使用讓從打包文件中刪除未使用的導(dǎo)出項以減少文件大小。最后,用以下內(nèi)容替換的部分在命令行中運(yùn)行將以監(jiān)視模式啟動,當(dāng)目錄中的文件更改時,它將重新編譯。這種轉(zhuǎn)換涉及三個單獨的加載器和庫在配置文件中為文件添加新規(guī)則。 webpack已成為現(xiàn)代Web開發(fā)中最重要的工具之一。它是一個用于JavaScript的模塊打包工具,但是它也可以轉(zhuǎn)換所有的前端資源,例如HTML和CSS,甚至是圖片。它可以讓你...
摘要:入門什么是官網(wǎng)介紹是一個模塊打包器。處理帶有依賴關(guān)系的模塊,生成一系列表示這些模塊的靜態(tài)資源。。我們在當(dāng)前項目根目錄下新建一個文件,為命令配置選項。引入生成的在瀏覽器中打開。我們刷新頁面,可以發(fā)現(xiàn)頁面發(fā)生了變化。 webpack 入門 1. 什么是webpack 官網(wǎng)介紹:webpack是一個模塊打包器。webpack 處理帶有依賴關(guān)系的模塊,生成一系列表示這些模塊的靜態(tài)資源。(web...
摘要:驗證驗證是連接階段的第一步,這一階段的目的是為了確保文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求,并且不會危害虛擬機(jī)自身的安全。字節(jié)碼驗證通過數(shù)據(jù)流和控制流分析,確定程序語義是合法的符合邏輯的。 看過這篇文章,大廠面試你「雙親委派模型」,硬氣的說一句,你怕啥? 讀該文章姿勢 打開手頭的 IDE,按照文章內(nèi)容及思路進(jìn)行代碼跟蹤與思考 手頭沒有 IDE,先收藏,回頭看 (萬一哪次面試問...
摘要:最終形成可以被虛擬機(jī)最直接使用的類型的過程就是虛擬機(jī)的類加載機(jī)制。即重寫一個類加載器的方法驗證驗證是連接階段的第一步,這一階段的目的是為了確保文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求,并且不會危害虛擬機(jī)自身的安全。 《深入理解Java虛擬機(jī):JVM高級特性與最佳實踐(第二版》讀書筆記與常見相關(guān)面試題總結(jié) 本節(jié)常見面試題(推薦帶著問題閱讀,問題答案在文中都有提到): 簡單說說類加載過...
閱讀 2068·2021-11-12 10:36
閱讀 1949·2021-11-09 09:49
閱讀 2644·2021-11-04 16:12
閱讀 1188·2021-10-09 09:57
閱讀 3276·2019-08-29 17:24
閱讀 1944·2019-08-29 15:12
閱讀 1305·2019-08-29 14:07
閱讀 1317·2019-08-29 12:53