O React 0.13 permite a criação de componentes React como classes ES6. Infelizmente, os métodos não estão this
vinculados a eles por padrão.
Aqui está uma autobind
funçã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);
}
...
}