autobind para React 0.13 ES6 Components

O React 0.13 permite a criação de componentes React como classes ES6. Infelizmente, os métodos não estão thisvinculados a eles por padrão.

Aqui está uma autobindfunção primitiva :

import is from 'is';

function getAllMethods(obj) {
return Object.getOwnPropertyNames(obj)
.filter(key => is.fn(obj[key]))
}

function autoBind(obj) {
getAllMethods
(obj.constructor.prototype)
.forEach(mtd => {
obj
[mtd] = obj[mtd].bind(obj);
})
}

export default autoBind;

(Use sua própria implementação para verificar se uma propriedade é uma função se você não usar is, por exemplo key => typeof obj[key] == 'function')

Uso:

class App extends React.Component {
constructor(props) {
super(props);
autoBind
(this);
}
...
}