auto-bind2

1.0.3 • Public • Published

ES6 Class Auto Binder

A Javascript ES6 class autoBind() function with a customizable filter and defaults for React.

Why Build This?

This package exposes an autoBind function that calls bind() on 'methods' in you ES6 class so that this always refers to the class object instance and not window or some other random object. It avoids the need to call bind() multiple times in your constructor, like this:

class Foo {
  constructor() {
    this.onClick = this.onClick.bind()
    this.onDrag = this.onDrag.bind()
    this.onWhatever = this.onWhatever.bind()
    ...
  }
  ...
}

Instead you just write:

class Foo {
  constructor() {
    autoBind(this)
  }
  ...
}

There are a few autoBind functions out there already, and they work great. However what I really felt was needed was a fully customizable function that used a filter callback so that it would work with whatever naming conventions you used for your callback functions.

Usage

Install the package with:

npm install auto-bind2

Import it using:

import autoBind from 'auto-bind2'
// OR
var autoBind = require('auto-bind2')

The function takes a this pointer and an optional filter method, e.g.:

autoBind(this)
 
autoBind(this, (funcName) => (funcName.startsWith('on')))
 
autoBind(this, (funcName) => (['onClick', 'onDrag', 'onEvent'].includes(funcName)))

The library includes support for React. React Component methods are already bound, so you can exclude them with:

import { reactAutoBind } from 'auto-bind2'
 
reactAutoBind(this)

or:

import { isReactMethod, autoBind } from 'auto-bind2'
 
autoBind(this, isReactMethod)

About

The code is written in ES6 Javascript and built to target NodeJS v8, Chrome v60 and uglification.

Readme

Keywords

Package Sidebar

Install

npm i auto-bind2

Weekly Downloads

0

Version

1.0.3

License

MIT

Last publish

Collaborators

  • jlyonsmith