#003 React 組件 繼承 自訂的組件

來源:互聯網
上載者:User

標籤:

主題:React組件 繼承 自訂的 組件一、需求說明

情況說明: 有A,B,C,D 四個組件,裡面都有一些公用的邏輯,比如 設定資料,擷取資料,有某些公用的的屬性,不想在 每一個 組件裡面寫這些屬性,怎麼辦? 【和 物件導向的語言,C#,Java 的基類 思想是 一樣的】

如果公用的東西,是一些方法,可以 使用 React 的 Mixins(ES5) ,高階組件(ES6)【高階函數不太瞭解,如何使用,去找下資料

但是如果有公用的屬性,那麼就有點 力不從心了

在想,React 中,是否可用繼承 自訂的組件?
經過一番尋找資料,發現,React 是可以 繼承 自己定義的組件的

二、解決方案

實現的步驟很簡單,只需要 把

 
  1. class Win extends React.Component

替換成

 
  1. class Win extends BaseWin
1. 例子代碼
 
  1. import React from ‘react‘
  2. /**
  3. * 所有彈框的基類
  4. */
  5. class BaseWin extends React.Component {
  6. constructor(props) {
  7. super(props);
  8. this.name = ‘zhongxia‘;
  9. this.state = {};
  10. }
  11. common() {
  12. alert(‘this is a common function!‘)
  13. }
  14. }
  15. export default BaseWin;
 
  1. import React from ‘react‘
  2. import BaseWin from ‘./baseWindow‘
  3. class Win extends BaseWin {
  4. constructor(props) {
  5. super(props);
  6. this.state = {
  7. ...this.props
  8. };
  9. console.log(this.name);
  10. this.common();
  11. }
  12. getData() {
  13. return this.state;
  14. }
  15. render() {
  16. this.state.node.model.set({name: ‘zhongxia‘, age: 17})
  17. return (
  18. <div className="pop-dialog">
  19. <h2>彈框1</h2>
  20. <form>
  21. <label htmlFor="">使用者名稱:</label><input value={this.state.name} type="text"/>
  22. <label htmlFor="">密碼:</label><input type="password" value={this.state.password}/>
  23. </form>
  24. </div>
  25. );
  26. }
  27. }
  28. export default Win;
2. 執行個體化 React 組件的順序 和

執行個體化子類組件 ==》 建構函式裡面 super(prop)的時候去執行個體化 父類組件 ==》 父類組件執行個體化結束 ==》 子類組件執行個體化結束

啟動並執行:

1. 子類建構函式

2. super(props) 執行個體化父類

3. 子類建構函式結束,已經可以拿到父類的屬性和方法

4. 子類執行個體開始渲染頁面



來自為知筆記(Wiz)

#003 React 組件 繼承 自訂的組件

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.