您好,登錄后才能下訂單哦!
本篇內容主要講解“react 16.8版本新特性及對react開發的影響是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“react 16.8版本新特性及對react開發的影響是什么”吧!
Facebook團隊對社區上的MVC框架都不太滿意的情況下,開發了一套開源的前端框架react,于2013年發布第一個版本。
react最開始倡導函數式編程,使用function以及內部方法React.creactClass創建組件,之后在ES6推出之后,使用類組件Class構建包含生命周期的組件。
react16.8版本更新標志性的信息,是引入了hooks以及相關的一些api。
useState: // 函數式組件初始化state和更改state: const Counter = () =>{ const [num,setNum] = userState(0); return( <div> <div>{count}</div> <button onClick={()=>setCount(num+ 1)}>+</button> </div> ); };
userEffect副作用函數的組件,不僅取代了組件初始化,組件掛載成功,組件狀態更新這三個階段的生命周期函數
同時還能在這個階段處理一些內存隊列:包括定時器等,解決了在16.8版本之前,在組件移除之后,異步隊列沒有被移除,占據內存導致頁面卡頓等問題
useEffect(() => { compoment.subscribe(id); return () => { compoment.unsubscribe(theId) //取消訂閱 } });
在更新的版本之前,復用組件,更多的是使用高階組件,以及封裝的組件,通過傳參和父子組件通信的形式去復用,
更新之后,可以通過函數式組件返回狀態的形式,去接受組件向外暴露的組件內容。
實例
//舊版本 function children() { return function (WrappedComponent) { return class HighComponent extends React.Component { state = { childProps: xxx }; render() { const { childProps } = this.state; return <WrappedComponent childProps={childProps} />; } }; }; }
class App extends Component{ render(){ /** * 調用高階組件 */ const { childProps} = this.props; return ( <children columns={[...]} // tableProps包含pagination, onChange, dataSource等屬性。 {...childProps} /> ) } }
// 新版本 function children() { const [childProps, setChildProps] = useState(xxx); return childProps; } function App { const { childProps} = useTable(); return ( <Table columns={[...]} // tableProps包含pagination, onChange, dataSource等屬性 {...childProps} /> ) }
在我們上面提到的,清除定時器,以及解決在生命周期變化過程中,消除占用內存的隊列等
函數式組件出現了狀態管理,在以往的react函數式編程過程中,react只能被動去接收一個從父組件傳遞下來的一個props狀態,在hooks更新之后,可以使用hooks更新的方法,提高組件的功能性以及擴展性,在函數式組件當中擁有了像class組件一樣可控生命周期
useEffect取代了一部分生命周期函數,從代碼量的角度來說,簡化了代碼,解決了在class組件在編寫過程中,需要不斷使用bind或者箭頭函數去綁定當前的this,更專注于當前狀態的管理
react diff這里不做深入講解,簡單來說diff算法是react以及vue2.0版本當中:
內部有一套虛擬dom的算法,在組件渲染過程中,對每個dom渲染一個key值,
在state狀態更新過程時,對應渲染的虛擬dom會去對比真實渲染在頁面上的dom元素,如果某個節點對比時發現有更改,對應更改當前虛擬dom節點的數據狀態,再渲染真實的dom到頁面當中。
兩者的聯系:
hooks在更新之后,減少了對生命周期函數的執行,同時更新狀態更為迅速,這樣在虛擬dom執行過程中,提高diff執行速度
hooks使得函數式組件有了自己內部的狀態,在函數式組件執行過程中,不需要等待裝載到父組件當中,自己可以更新狀態,所以減少了部分dom的深度,在頁面渲染過程中,也算是變相提高了頁面渲染速度。
到此,相信大家對“react 16.8版本新特性及對react開發的影響是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。