摘要:轉碼后,我們的靜態屬性同樣掛載到了這個新的上,這是的操作,無解,它已經不是原來的了。這就導致我們在里層的中去調用等靜態屬性就會報。所以盡可能不使用靜態屬性,而是直接置頂用變量代替。
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定義屬性(方法沒問題)。。畢竟誰也不支持會不會有什么其他東東包裹了我們的組件。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96227.html
摘要:虛擬機為了保證一個類的方法在多線程環境中被正確地加鎖同步。但啟動類加載器不可能認識這些代碼。實現模塊化熱部署的關鍵則是它的自定義類加載器機制的實現。 概念區分:加載、類加載、類加載器 類加載是一個過程。 加載(Loading)是類加載這一個過程的階段。 類加載器是ClassLoader類或其子類。 本文中的類的描述都包括了類和接口的可能性,因為每個Class文件都有可能代表J...
摘要:使用讓從打包文件中刪除未使用的導出項以減少文件大小。最后,用以下內容替換的部分在命令行中運行將以監視模式啟動,當目錄中的文件更改時,它將重新編譯。這種轉換涉及三個單獨的加載器和庫在配置文件中為文件添加新規則。 webpack已成為現代Web開發中最重要的工具之一。它是一個用于JavaScript的模塊打包工具,但是它也可以轉換所有的前端資源,例如HTML和CSS,甚至是圖片。它可以讓你...
摘要:入門什么是官網介紹是一個模塊打包器。處理帶有依賴關系的模塊,生成一系列表示這些模塊的靜態資源。。我們在當前項目根目錄下新建一個文件,為命令配置選項。引入生成的在瀏覽器中打開。我們刷新頁面,可以發現頁面發生了變化。 webpack 入門 1. 什么是webpack 官網介紹:webpack是一個模塊打包器。webpack 處理帶有依賴關系的模塊,生成一系列表示這些模塊的靜態資源。(web...
摘要:驗證驗證是連接階段的第一步,這一階段的目的是為了確保文件的字節流中包含的信息符合當前虛擬機的要求,并且不會危害虛擬機自身的安全。字節碼驗證通過數據流和控制流分析,確定程序語義是合法的符合邏輯的。 看過這篇文章,大廠面試你「雙親委派模型」,硬氣的說一句,你怕啥? 讀該文章姿勢 打開手頭的 IDE,按照文章內容及思路進行代碼跟蹤與思考 手頭沒有 IDE,先收藏,回頭看 (萬一哪次面試問...
摘要:最終形成可以被虛擬機最直接使用的類型的過程就是虛擬機的類加載機制。即重寫一個類加載器的方法驗證驗證是連接階段的第一步,這一階段的目的是為了確保文件的字節流中包含的信息符合當前虛擬機的要求,并且不會危害虛擬機自身的安全。 《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版》讀書筆記與常見相關面試題總結 本節常見面試題(推薦帶著問題閱讀,問題答案在文中都有提到): 簡單說說類加載過...
閱讀 2026·2021-11-12 10:36
閱讀 1885·2021-11-09 09:49
閱讀 2604·2021-11-04 16:12
閱讀 1152·2021-10-09 09:57
閱讀 3242·2019-08-29 17:24
閱讀 1916·2019-08-29 15:12
閱讀 1278·2019-08-29 14:07
閱讀 1292·2019-08-29 12:53