从Component获取ES6类实例

时间:2016-06-21 22:29:53

标签: reactjs

我有一个基类,App(ES6语法);我希望派生类能够指定要呈现的几个子组件 - 具体取决于其状态。例如,

class App {
  render() {
    return ( 
      <div>{ this.state.c1 }</div> 
      <div>{ this.state.c2 }</div> 
    );
  }
}

class MyApp extends App {
  constructor() {
    this.state = {
      c1: <Foo/>,
      c2: <Bar/>
    }
  }
}

class Foo extends React.Component {
  getTitle() { return 'Foo'; }
}

我还需要有基类App,在子组件上调用方法。例如,this.state.component.getTitle()

但是,this.state.c1不是ES6类(即不是Foo的实例)。

我不能使用refs,因为基类不会创建<Foo/>组件。

我无法使用合成,因为App需要多个子组件。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为最合适的方法是反转依赖。

即,将Model类作为属性“注入”每个组件。然后从基类访问该属性。