es6 class bind vs class declaration

时间:2016-11-23 08:07:25

标签: javascript class reactjs ecmascript-6 closures

不知道标题是否描述了我最好的问题,但在这里我需要知道:

我正在使用 reactjs es6 类,我需要制作一种mixin

我使用函数 SuperMixin 作为我班级的包装。

第一种方法是在闭包中创建一个类,这样只会创建一次,并在调用 SuperMixin 时使用bind()来传递参数那个班。

let SuperMixin = (() => {
  class Mixin extends Component {
    constructor(InnerComponent){
      super();
      this.InnerComponent = InnerComponent;
    }
    render(){
      return <this.InnerComponent />
    }
  }
  return function(InnerComponent) {
    let newMixin = Mixin.bind(null, InnerComponent);
    newMixin.propTypes = {
      txt:propTypes.string.isRequired
    }
    return newMixin;
  }
})()

let ButtonMixed = SuperMixin(ButtonComponent)

第二种方法是在每次调用 SuperMixin 包装器时创建类:

let SuperMixin = InnerComponent => {
  class Mixin extends Component {
    constructor(){
      super();
      this.InnerComponent = InnerComponent;
    }
    render(){
      return <InnerComponent />
    }
  }

  Mixin.propTypes = {
      txt:propTypes.string.isRequired
  }

  return Mixin;
}

let ButtonMixed = SuperMixin(ButtonComponent)

现在,我知道bind()创建了一个新函数,在这种情况下是一个新类,所以当涉及到内存效率时,哪种方法最好考虑类Mixin的实例?

根据我的想法,两种方法都会创建相同的数字或实例,这是正确的还是使用bind()方法涉及其他一些逻辑?

PS:如果你可以帮助我进行标题重构,请ping我:)

0 个答案:

没有答案