javascript - 如何在 React 中重写父类方法?

标签 javascript ecmascript-6 reactjs

我正在扩展一个基类并覆盖基类中的一个方法。但是当我调用它时,它调用的是父类(super class)版本。如何覆盖该方法?

    var Hello = React.createClass( {

        getName: function() { return "super" },

        render: function() {

            return <div>This is: {this.getName()}</div>;
        }
    });

    class HelloChild extends Hello {
        constructor(props) {
          super(props);

          console.log( this.getName());
        }
        getName()
        {
          return "Child";
        }
    };

我想让它打印“This is: Child”,但它却打印“This is: super”

最佳答案

问题是您将 ES6 类型类声明(例如 Hello)与老式 Javascript 声明(例如 HelloChild)混合在一起。要修复 HelloChild,请将方法绑定(bind)到类。

class HelloChild extends Hello {
    constructor(props) {
      super(props);

      this.getName = this.getName.bind(this); // This is important

      console.log( this.getName());
    }

    getName()
    {
      return "Child";
    }
};

然后它会起作用。

关于javascript - 如何在 React 中重写父类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38758518/

相关文章:

node.js - 如何在 Node REPL 中使用 "import"

javascript - ES6模块: imported constants are undefined at first; they become available later

reactjs - React - 将 props/state 传递给渲染的 HTML 字符串?

reactjs - react-virtualized ,在哪里调用 forceUpdateGrid 更新表数据?

javascript - 在 React 中父级触发的事件中将数据传递给子级

javascript - 在 Node 中运行 Grunt 任务

javascript - 如何在 Three.js 中更新制服?

javascript - chrome.scripting.executeScript - 意外属性 : 'arguments'

javascript - 每当创建无效日期对象时如何抛出错误?

javascript - 如何在 Ember 中的同一组件上编辑待办事项任务