Skip to content

Instantly share code, notes, and snippets.

@sebmarkbage
Last active March 29, 2024 06:03
Show Gist options
  • Star 96 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save sebmarkbage/fac0830dbb13ccbff596 to your computer and use it in GitHub Desktop.
Save sebmarkbage/fac0830dbb13ccbff596 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;
}
@divanshArora
Copy link

@pmvald Could you elaborate on "create instances of the mixin classes inside the host class and proxy to their methods" please. I am trying to do that

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