class-autobind
Version:
Method auto-bind for ES6 (ES2015) classes
53 lines (39 loc) • 1.47 kB
Markdown
# Method auto-bind for ES6 (ES2015) classes
This package provides a single function, `autobind`, for use within a constructor to bind all methods to the instance itself.
For example, this allows us to pass a method to an event handler `element.addEventListener('click', this.onClick)` and be sure the `onClick` method will always be called with the right context.
Note: This has some specific logic for React, but could be used in any project.
## Usage:
```js
import autobind from 'class-autobind';
class MyComponent extends React.Component {
constructor() {
super(...arguments);
autobind(this);
}
render() {
return <button onClick={this.onClick}>Click Me</button>;
}
onClick() {
console.log('Button Clicked');
}
}
```
## Advanced Usage:
If your component will possibly be subclassed (you really should not do this, but some third-party libraries like [react-css-modules](https://npmjs.com/package/react-css-modules) do so) then you will need to specify which prototype will be the source of methods that are to be automatically bound.
```js
import autobind from 'class-autobind';
class MyComponent extends React.Component {
constructor() {
super(...arguments);
autobind(this, MyComponent.prototype); // Note the second parameter.
}
render() {
/* ... */
}
}
class MySubClassedComponent extends MyComponent {
/* This is probably a very bad idea. */
}
```
## License
This software is [BSD Licensed](/LICENSE).