情况说明: 有A,B,C,D 四个组件,里面都有一些公用的逻辑,比如 设置数据,获取数据,有某些公用的的属性,不想在 每一个 组件里面写这些属性,怎么办? 【和 面向对象的语言,C#,Java 的基类 思想是 一样的】
如果公用的东西,是一些方法,可以 使用 React 的 Mixins(ES5) ,高阶组件(ES6)【高阶函数不太了解,如何使用,去找下资料 】
但是如果有公用的属性,那么就有点 力不从心了
在想,React 中,是否可用继承 自定义的组件?
经过一番查找资料,发现,React 是可以 继承 自己定义的组件的
实现的步骤很简单,只需要 把
class Win extends React.Component
替换成
class Win extends BaseWin
import React from ‘react‘/*** 所有弹框的基类*/class BaseWin extends React.Component {constructor(props) {super(props);this.name = ‘zhongxia‘;this.state = {};}common() {alert(‘this is a common function!‘)}}export default BaseWin;
import React from ‘react‘import BaseWin from ‘./baseWindow‘class Win extends BaseWin {constructor(props) {super(props);this.state = {...this.props};console.log(this.name);this.common();}getData() {return this.state;}render() {this.state.node.model.set({name: ‘zhongxia‘, age: 17})return (<div className="pop-dialog"><h2>弹框1</h2><form><label htmlFor="">用户名:</label><input value={this.state.name} type="text"/><label htmlFor="">密码:</label><input type="password" value={this.state.password}/></form></div>);}}export default Win;
实例化子类组件 ==》 构造函数里面 super(prop)的时候去实例化 父类组件 ==》 父类组件实例化结束 ==》 子类组件实例化结束
运行的效果图:





原文:http://www.cnblogs.com/zhongxia/p/5ced3d09468044a05fcd0de63c9ce1e2.html