摘要:函數組件使用函數定義組件,類組件使用定義組件函數組件類組件函數組件的寫法要比類組件簡潔,不過類組件比函數組件功能更加強大。函數組件無狀態組件和展示型組件主要關注展現,類組件有狀態組件和容器型組件主要關注數據邏輯。
函數組件 vs 類組件
函數組件(Functional Component )和類組件(Class Component),劃分依據是根據組件的定義方式。函數組件使用函數定義組件,類組件使用ES6 class定義組件
// 函數組件 function Welcome(props) { returnHello, {props.name}
; } // 類組件 class Welcome extends React.Component { render() { returnHello, {this.props.name}
; } }
函數組件的寫法要比類組件簡潔,不過類組件比函數組件功能更加強大。函數組件更加專注和單一,承擔的職責也更加清晰,它只是一個返回React 元素的函數,只關注對應UI的展現。函數組件接收外部傳入的props,返回對應UI的DOM描述,
類組件可以維護自身的狀態變量,即組件的state,類組件還有不同的生命周期方法,可以讓開發者能夠在組件的不同階段(掛載、更新、卸載),對組件做更多的控制。
無狀態組件 vs 有狀態組件函數組件一定屬于無狀態組件 (劃分依據是根據組件內部是否維護state)
// 無狀態組件 class Welcome extends React.Component { render() { return展示型組件 vs 容器型組件Hello, {this.props.name}
; } } // 有狀態類組件 class Welcome extends React.Component { constructor(props) { super(props); this.state = { show: true } } render() { const { show } = this.state; return ( <> { show &&Hello, {this.props.name}
} > ) } }
展示型組件(Presentational Component)和容器型組件(Container Component),劃分依據是根據組件的職責。 (展示型組件一般是無狀態組件,不需要state)
class UserListContainer extends React.Component{ constructor(props){ super(props); this.state = { users: [] } } componentDidMount() { var that = this; fetch("/path/to/user-api").then(function(response) { response.json().then(function(data) { that.setState({users: data}) }); }); } render() { return () } } function UserList(props) { return ( ) }{props.users.map(function(user) { return (
- {user.name}
); })}
展示型組件和容器型組件是可以互相嵌套的,展示型組件的子組件既可以包含展示型組件,也可以包含容器型組件,容器型組件也是如此。例如,當一個容器型組件承擔的數據管理工作過于復雜時,可以在它的子組件中定義新的容器型組件,由新組件分擔數據的管理。展示型組件和容器型組件的劃分完全取決于組件所做的事情。
總結通過上面的介紹,可以發現這三組概念有很多重疊部分。這三組概念都體現了關注點分離的思想:UI展現和數據邏輯的分離。函數組件、無狀態組件和展示型組件主要關注UI展現,類組件、有狀態組件和容器型組件主要關注數據邏輯。但由于它們的劃分依據不同,它們并非完全等價的概念。它們之間的關聯關系可以歸納為:函數組件一定是無狀態組件,展示型組件一般是無狀態組件;類組件既可以是有狀態組件,又可以是無狀態組件,容器型組件一般是有狀態組件。
舉個文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102489.html
摘要:在初步完成了在線流程圖編輯工具之后又接到了在線搭建頁面工具的需求剛開始其實并不想接項目因為從歷史以及現實原因來看個性化及動態渲染都是很難解決的痛點各種頁面搭建工具的不溫不火早已說明了這條路并沒有這么好走但從另一個方面來說既然有了這樣的需求那 在初步完成了在線流程圖編輯工具之后,又接到了在線搭建頁面工具的需求,剛開始其實并不想接項目,因為從歷史以及現實原因來看,個性化及動態渲染都是很難解決的痛...
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:異步實戰狀態管理與組件通信組件通信其他狀態管理當需要改變應用的狀態或有需要更新時,你需要觸發一個把和載荷封裝成一個。的行為是同步的。所有的狀態變化必須通過通道。前端路由實現與源碼分析設計思想應用是一個狀態機,視圖與狀態是一一對應的。 React實戰與原理筆記 概念與工具集 jsx語法糖;cli;state管理;jest單元測試; webpack-bundle-analyzer Sto...
閱讀 2858·2021-11-22 13:54
閱讀 3522·2021-11-16 11:44
閱讀 1370·2021-09-07 10:19
閱讀 1470·2019-08-29 17:30
閱讀 3196·2019-08-29 11:33
閱讀 3543·2019-08-26 12:18
閱讀 2886·2019-08-26 11:53
閱讀 1336·2019-08-26 10:47