Skip to content

Instantly share code, notes, and snippets.

@dleavitt
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dleavitt/b50b1e2cbda15efd79fb to your computer and use it in GitHub Desktop.
Save dleavitt/b50b1e2cbda15efd79fb to your computer and use it in GitHub Desktop.
Alt Actions Inheritance Example
import Alt from 'alt';
let alt = new Alt();
class AnimalActions {
run() {
// do some stuff
this.dispatch();
}
}
class HogActions extends AnimalActions {
forage() {
this.dispatch();
}
}
// AnimalActions aren't returned by Object.getOwnPropertyNames
let hogActions = alt.createActions(HogActions);
hogActions.forage() // yep
hogActions.run() // nope
@dleavitt
Copy link
Author

Solution?

import Alt from 'alt';
let alt = new Alt();

class AnimalActions {
  constructor() {
    this.generateActions('drink');
  }

  run() {
    // do some stuff
    this.dispatch();
  }
}

class HogActions extends AnimalActions {
  constructor() {
    super();
    this.generateActions('muck');
  }

  forage() {
    this.dispatch();
  }
}

class GooseActions extends AnimalActions {
  constructor() {
    super();
    this.generateActions('squawk');
  }

  fly() {
    this.dispatch();
  }
}

let hogActions = alt.createActions(AnimalActions, alt.createActions(HogActions));
let gooseActions = alt.createActions(AnimalActions, alt.createActions(GooseActions));

class HogStore {
  constructor() {
    this.bindActions(hogActions);
  }

  onForage() {
    console.log('hogforage');
  }

  onRun() {
    console.log('hogRun');
  }

  onDrink() {
    console.log('hogdrink');
  }

  onMuck() {
    console.log('hogmuck');
  }
}

class GooseStore {
  constructor() {
    this.bindActions(gooseActions);
  }

  onSquawk() {
    console.log('squawk');
  }

  onRun() {
    console.log('gooseRun');
  }

  onFly() {
    console.log('goosefly');
  }

  onDrink() {
    console.log('goosedrink');
  }
}

alt.createStore(HogStore);
alt.createStore(GooseStore)

hogActions.forage();
hogActions.run();
hogActions.drink();
hogActions.muck();

gooseActions.squawk();
gooseActions.run();
gooseActions.fly();
gooseActions.drink();

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