无法覆盖React中的方法

时间:2017-08-01 16:44:35

标签: javascript reactjs ecmascript-6 components

我有两个组成部分:

var A = React.createClass( {

   doSomething: function() { return "I am A" },

    render() {
    return(
        <h1>{this.doSomething()}</h1>
      );    
   }
    });

class B extends A {
   doSomething(): any {
     console.log("I am B");
   } 
}

https://jsfiddle.net/wp4wshdu/

我遇到与此相同的问题=&gt; How to override a parent class method in React?这似乎是因为只有EC-6风格定义的组件B.我的问题是我无法改变A类。在这种情况下,如何让React使用B&B的方法?

1 个答案:

答案 0 :(得分:1)

在上面的代码中doSomething是A上的实例方法和B中的原型方法。

大致相同
 class A extends React.Component {
   doSomething = () => {
     console.log("I am A");
   } 
 }

 class B extends A {
   doSomething() { ... } 
 }

来自A的doSomething来自原型链中B的doSomething。在各地的ES6类中坚持使用方法的原型属性是常规的,以避免像这样的问题。如果无法做到这一点,那么doSomething也应该成为子类中的实例方法:

 class B extends A {
   doSomething = () => { ... } 
 }