Skip to content

Instantly share code, notes, and snippets.

@jhliberty
Forked from sebmarkbage/es6mixin.js
Created May 13, 2016 08:47
Show Gist options
  • Save jhliberty/916aa05473216144f52ca811dadd66c8 to your computer and use it in GitHub Desktop.
Save jhliberty/916aa05473216144f52ca811dadd66c8 to your computer and use it in GitHub Desktop.
Mixin
var Bar1 = base => class extends base {
componentWillMount(){
super.componentWillMount();
console.log('Bar1');
}
};
var Bar2 = base => class extends base {
componentWillMount(){
super.componentWillMount();
console.log('Bar2');
}
};
class Foo extends mixins(Bar1, Bar2) {
componentWillMount() {
console.log('Foo before mixins');
super.componentWillMount();
console.log('Foo after mixins');
}
}
function mixins(...mixinFactories) {
var base = class {};
// TODO: Add all possible method names that might call super()
// to the base class so that they don't throw.
for (var i = 0; i < mixinFactories.length; i++) {
base = mixinFactories[i](base);
}
return base;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment