Instantly share code, notes, and snippets.

Embed
What would you like to do?
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;
}
@nhansum

This comment has been minimized.

nhansum commented Jan 15, 2018

Hey, great gist I encountered a problem though when trying it out:

Bar1 should have super.componentWillMount(); removed otherwise it will result in a TypeError

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment