在ReactJs中,如何使用extends创建子组件

时间:2017-01-10 19:20:52

标签: javascript reactjs

在下面的代码片段中,我使用extends来创建组件。这是行不通的。但是如果我使用React.createClass({});它工作正常。你可以告诉我下面代码片段中的问题是什么

import React from 'react';

class App extends React.Component {
render() {
  return (
     <div>
        <AuditTable/>
     </div>
  );
 }
}

class AuditTable extends React.Component {
render(){
    return(
        <div> This is audit table 
            <AuditTable.Header/>
        </div>
    );
}
}

class AuditTable.Header extends React.Component{
render(){
    return(
        <div>
            Audit Table Header
        </div>
    );
}
}

export default App;

此代码不起作用。任何帮助都会很棒

4 个答案:

答案 0 :(得分:4)

import React from 'react';

class App extends React.Component {
   render() {
      return (
         <div>
            <AuditTable/>
         </div>
      );
   }
}


var AuditTable = class AuditTable extends React.Component {
    render(){
        return(
            <div>
                <AuditTable.Header/>
                <AuditTable.Row/>
            </div>
        );
    }
}

AuditTable.Header = class Header extends React.Component{
    render(){
        return(
            <div>
                Audit Table Header
            </div>
        );
    }
}

答案 1 :(得分:2)

我得到了我发布的问题的解决方案

var AuditTable = class AuditTable extends React.Component { ... }
AuditTable.Header = class Header extends React.Component { ... }
AuditTable.Row = class Row extends React.Component { ... }

创建一个类并分配给ca变量

谢谢大家

答案 2 :(得分:1)

AuditTable.Header不是有效的类名(因为它包含一个点)。如果要将子组件导出为组件的静态属性,则有两种可能:

1 /声明Header组件,然后将其分配给AuditTable.Header

const Header extends React.Component{
  render(){
    return(
      <div>
        Audit Table Header
      </div>
    );
  }
}

AuditTable.Header = header;

2 /直接声明Header作为AuditTable

的静态属性
class AuditTable extends React.Component {

  static Header = class extends React.Component{
    render(){
      return(
        <div>
          Audit Table Header
        </div>
      );
    }
  }

  render(){
    return(
      <div> This is audit table 
        <AuditTable.Header/>
      </div>
    );
  }
}

答案 3 :(得分:0)

将AuditTable.Header更改为AuditTableHeader,您的代码应按预期工作。

React.Component不是您扩展的类的名称。有一个名为React的对象,它有一个名为Component的键,它是你扩展的类。