react 版權問題 React 16 兩三事

2021-10-12 13:35:31 字數 1582 閱讀 7703

這兩天 react 16 發布了,同時, react 16 與 15.6.x 都已經切換到 mit 協議。版權的熱議與一些公司的決斷對於整個社群而言看起來是個好事,同時,也給前端的元件化帶來了更多的思考。

react 16 大致有以下改變:新的 fiber render 引擎:以支援許多原來做不到的關於 render 的特性

支援非阻塞式渲染

render 支援 fragments (陣列) 與字串型別

支援 error 邊界捕獲

新增 reactdom.createportal 方法來進行元件 dom 節點之外的渲染,這個特性使得模態框、popover、tooltip 之類的渲染變得更加方便。btw, 這個本來是另乙個開源庫的思路: tajo/react-portal

支援 stream 的 server side render

減少的體積:大致減少了 30% 的檔案體積

可能需要關注的 breaking changes:unstable_renderintocontainer, unstable_handleerror 等之前的內部特性有改變,如果有依賴庫用到了的話可能需要注意

生命週期的順序更加穩定,尤其是子節點的 componentwillmount 總會發生在父節點的 componentwillunmount 之前

componentdidupdate 方法不再能夠獲取 prevcontext 引數

shallow renderer 不再呼叫 componentdidupdate 方法,並且不再提供 unstable_batchedupdates 方法(這個似乎會影響到一些之前的測試**)

不再有 react-with-addons.js 這個庫。目測這個之後會有開源庫來提供類似功能,但 react 官方提倡的是分別引用不同的 npm 庫來做 addons 的事情

rewrite 的過程

其中有些內容感覺還是挺值得借鑑學習的:並沒有 fork branch,而是用了乙個 usefiber 的布林值作為 flag 來在執行時決定使用那個引擎。關於多人維護的**在版本管理時使用什麼策略這個問題也是老生常談了,我跟小夥伴們也討論過 flag 的方式,雖然挺理想的但還真不是什麼團隊都玩得來的。

最開始的開發流程,基本上是實現最基礎的 api subset ,然後跑單元測試

測試過程中也在調整 test case,因為有可能有些問題之前沒測到,或者是之前的測試依賴了一些內部方法

dogfooding:在 facebook 的內部工具以及對外產品上灰髮新版本 react 作為測試,對外的大型產品主要從 開始。說實話這個對於 ui 框架而言真夠大膽的……

作為開發者

反正我是不會這麼快遷移到 react 16 的……尤其是對於現有產品平台。

反而,之前的版權事件讓我有些去 react 化的傾向,或者更確切的說,弱化 ui 框架對於專案的影響的傾向。具體怎麼做可能還值得進一步**,比如更多使用 web 標準的方案比如 css 而非與框架繫結的 css in js;比如基礎元件更多考慮純粹 vanilla js 實現,然後再用框架封裝;有哪些邏輯可以進一步分離,如何分離,等等。

react 之後會怎樣也還真不好說,這一次版權事件感覺並沒有就這麼終結,應該還會潛移默化地進一步對社群造成長久影響,需要進一步觀望。

react(1) 虛擬DOM概念理解

虛擬dom virtual document object model 通過js操作頁面上的元素 input,tr 是框架中的概念,程式設計師用js物件來模擬頁面上的dom樹 實現dom元素的高效更新 如果要將乙個 按照某一列排序,我們是通過對 的物件陣列實現重新排序後,再將整個陣列重新渲染到頁面上...

react 版權問題 react中樣式衝突怎麼解決

解決react中樣式衝突的方法 首先開啟相應的 檔案 然後將類名前加上模組名,如將整個元件的樣式表css類名前加上元件名lovevideo即可。本教程操作環境 windows7系統 react17.0.1版本,該方法適用於所有品牌電腦。解決react中樣式衝突 react在開發中很多有很多需要注意的...

React筆記 2 react語法1

這一節內容主要以了解為主。漸漸的體會react的語法和其特性。htmlandjs 混合編寫 react和以往的前後臺書寫方式不一樣。在之前的多個語言中,講求的是將頁面 和js 邏輯分開,包括原來的css檔案都有獨立的分裝。而react的提供了一種html和js語句混合編寫的方式。這就是jsx。先不詳...