成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

@hot熱加載修飾器導(dǎo)致static靜態(tài)屬性丟失(已解決)

JasonZhang / 1765人閱讀

摘要:轉(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

相關(guān)文章

  • 虛擬機(jī)類加載機(jī)制

    摘要:虛擬機(jī)為了保證一個類的方法在多線程環(huán)境中被正確地加鎖同步。但啟動類加載器不可能認(rèn)識這些代碼。實現(xiàn)模塊化熱部署的關(guān)鍵則是它的自定義類加載器機(jī)制的實現(xiàn)。 概念區(qū)分:加載、類加載、類加載器 類加載是一個過程。 加載(Loading)是類加載這一個過程的階段。 類加載器是ClassLoader類或其子類。 本文中的類的描述都包括了類和接口的可能性,因為每個Class文件都有可能代表J...

    airborne007 評論0 收藏0
  • 一份關(guān)于webpack2和模塊打包的新手指南

    摘要:使用讓從打包文件中刪除未使用的導(dǎo)出項以減少文件大小。最后,用以下內(nèi)容替換的部分在命令行中運(yùn)行將以監(jiān)視模式啟動,當(dāng)目錄中的文件更改時,它將重新編譯。這種轉(zhuǎn)換涉及三個單獨的加載器和庫在配置文件中為文件添加新規(guī)則。 webpack已成為現(xiàn)代Web開發(fā)中最重要的工具之一。它是一個用于JavaScript的模塊打包工具,但是它也可以轉(zhuǎn)換所有的前端資源,例如HTML和CSS,甚至是圖片。它可以讓你...

    tianren124 評論0 收藏0
  • WEBPACK 入門

    摘要:入門什么是官網(wǎng)介紹是一個模塊打包器。處理帶有依賴關(guān)系的模塊,生成一系列表示這些模塊的靜態(tài)資源。。我們在當(dāng)前項目根目錄下新建一個文件,為命令配置選項。引入生成的在瀏覽器中打開。我們刷新頁面,可以發(fā)現(xiàn)頁面發(fā)生了變化。 webpack 入門 1. 什么是webpack 官網(wǎng)介紹:webpack是一個模塊打包器。webpack 處理帶有依賴關(guān)系的模塊,生成一系列表示這些模塊的靜態(tài)資源。(web...

    mikasa 評論0 收藏0
  • 類的加載機(jī)制,雙親委派模型,搞定大廠高頻面試題

    摘要:驗證驗證是連接階段的第一步,這一階段的目的是為了確保文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求,并且不會危害虛擬機(jī)自身的安全。字節(jié)碼驗證通過數(shù)據(jù)流和控制流分析,確定程序語義是合法的符合邏輯的。 看過這篇文章,大廠面試你「雙親委派模型」,硬氣的說一句,你怕啥? 讀該文章姿勢 打開手頭的 IDE,按照文章內(nèi)容及思路進(jìn)行代碼跟蹤與思考 手頭沒有 IDE,先收藏,回頭看 (萬一哪次面試問...

    Object 評論0 收藏0
  • 深入理解虛擬機(jī)之虛擬機(jī)類加載機(jī)制

    摘要:最終形成可以被虛擬機(jī)最直接使用的類型的過程就是虛擬機(jī)的類加載機(jī)制。即重寫一個類加載器的方法驗證驗證是連接階段的第一步,這一階段的目的是為了確保文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求,并且不會危害虛擬機(jī)自身的安全。 《深入理解Java虛擬機(jī):JVM高級特性與最佳實踐(第二版》讀書筆記與常見相關(guān)面試題總結(jié) 本節(jié)常見面試題(推薦帶著問題閱讀,問題答案在文中都有提到): 簡單說說類加載過...

    MadPecker 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<