不知道标题是否描述了我最好的问题,但在这里我需要知道:
我正在使用 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我:)