在React项目中,“this”"转换为“未定义”
In React project, "this" converts into "undefined"
一个非常简单的代码
var App = React.createClass({
handleForm: (e) => {
e.preventDefault();
},
render: () => {
return (
<form>
<button type="submit" onClick={this.handleForm}>Go</button>
</form>
);
}
});
被转换成
// ...
_react2['default'].createElement(
'button',
{ type: 'submit', onClick: undefined.handleFormSubmit },
'Go'
)
但是为什么呢?我需要绑定所有的东西明确(包括this.setState
,我不能得到工作同样的原因)?
我使用react 0.13.3与webpack 1.12.2和babel-loader 5.3.2。我从来没有遇到过这样的问题。
当您使用箭头函数作为对象文字中的属性值时,到this
的绑定是函数声明范围的绑定,就像任何箭头函数一样。在ES6模块代码中,this
在最外层上下文中的值被定义为undefined
,因此Babel只是内联这个值。你要做的是:
var App = React.createClass({
handleForm(e) {
e.preventDefault();
},
render() {
return (
<form>
<button type="submit" onClick={this.handleForm}>Go</button>
</form>
);
}
});
作为最后的注意事项,当使用React.createClass
时,您不需要绑定任何成员函数,因为React会自动为您完成此操作,并且比使用Function.prototype.bind
更有效。
感谢@loganfsmyth更新this
是undefined
的原因
相关文章:
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- Angular promise return"未定义的“;值.NET MVC
- 得到"未定义不是函数“;使用显示原型图案时出错
- 为什么我会出现此错误"未捕获引用错误:未定义标题;
- jquery validate 1.8.1”;jQuery"是未定义的错误IE8
- "这个“;正在返回未定义的
- 我该如何解决“;未捕获引用错误:谷歌没有定义"?(谷歌地图API)
- 得到"全局未定义“;全局变量定义清楚时出错
- "TypeError:t.start未定义”;,在fullcalendar.min.js中,同时在我的网站上使
- "未定义不是函数“;错误jQuery,.replaces,scrollTop
- "ctrl”;在指令中的LINK中未定义
- "未定义的“;当从Android向JavaScript传递数据时
- "无法读取属性'id'未定义的“;解析工厂中声明的数组时
- "未捕获的类型错误:未定义的不是函数“;当向输入字段添加值时
- jqueryui:"类型错误:this.menu.element未定义"
- 我可以't克服这个错误“;未定义的局部变量或方法`f'"任何原因
- "未捕获的ReferenceError:createDayLabel未定义"-如何解决此错误以获得M
- Angular为什么说“;未捕获的ReferenceError:$scope未定义"