国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

深入理解react 組件類型及使用場景

2024-05-06 15:41:51
字體:
來源:轉載
供稿:網友

函數組件 vs 類組件

函數組件(Functional Component )和類組件(Class Component),劃分依據是根據組件的定義方式。函數組件使用函數定義組件,類組件使用ES6 class定義組件

// 函數組件function Welcome(props) { return <h1>Hello, {props.name}</h1>;}// 類組件class Welcome extends React.Component { render() {  return <h1>Hello, {this.props.name}</h1>; }}
    函數組件的寫法要比類組件簡潔,不過類組件比函數組件功能更加強大。函數組件更加專注和單一,承擔的職責也更加清晰,它只是一個返回React 元素的函數,只關注對應UI的展現。函數組件接收外部傳入的props,返回對應UI的DOM描述, 類組件可以維護自身的狀態變量,即組件的state,類組件還有不同的生命周期方法,可以讓開發者能夠在組件的不同階段(掛載、更新、卸載),對組件做更多的控制。

無狀態組件 vs 有狀態組件

函數組件一定屬于無狀態組件 (劃分依據是根據組件內部是否維護state)

// 無狀態組件class Welcome extends React.Component { render() {  return <h1>Hello, {this.props.name}</h1>; }}// 有狀態類組件class Welcome extends React.Component { constructor(props) {  super(props);  this.state = {    show: true  } } render() {   const { show } = this.state;   return (     <>      { show && <h1>Hello, {this.props.name}</h1> }     </>  ) }}

展示型組件 vs 容器型組件

展示型組件(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 (   <UserList users={this.state.users} />  ) }}function UserList(props) { return (  <div>   <ul className="user-list">    {props.users.map(function(user) {     return (      <li key={user.id}>       <span>{user.name}</span>      </li>     );    })}   </ul>  </div> ) }

展示型組件和容器型組件是可以互相嵌套的,展示型組件的子組件既可以包含展示型組件,也可以包含容器型組件,容器型組件也是如此。例如,當一個容器型組件承擔的數據管理工作過于復雜時,可以在它的子組件中定義新的容器型組件,由新組件分擔數據的管理。展示型組件和容器型組件的劃分完全取決于組件所做的事情。

總結

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 永清县| 敦煌市| 平邑县| 邢台县| 织金县| 青州市| 巧家县| 通山县| 寿宁县| 岑溪市| 安平县| 西充县| 兴仁县| 连南| 湘潭市| 方山县| 斗六市| 特克斯县| 吴桥县| 女性| 沾益县| 红安县| 东乌珠穆沁旗| 梧州市| 通渭县| 绥化市| 互助| 松江区| 湘潭县| 钟山县| 昌宁县| 鄂伦春自治旗| 罗田县| 湖州市| 霍林郭勒市| 中阳县| 泰兴市| 浦北县| 甘孜县| 江都市| 长乐市|