使用“this”关键字响应类行为
React Class behaviour with "this" keyword
为什么我需要在onChange
处理程序中添加bind(this)
for handleChange
才能获得正确的this
关键字?
class SearchBar extends React.Component{
constructor(props){
super(props);
}
handleChange(){
console.log(this)
this.props.onUserInput(
this.refs.filterTextInput.value,
this.refs.inStockOnlyInput.checked
);
}
render() {
return (
<form>
<input
type="text"
placeholder="Searrch...."
value={this.props.filterText}
ref="filterTextInput"
onChange={this.handleChange.bind(this)} // the bind(this) is needed if not this in handleChange became undefined
/>
<p>
<input
type="checkbox"
checked={this.props.inStockOnly}
ref="inStockOnlyInput"
onChange={this.handleChange}
/>
{' '}
only show products in stock
</p>
</form>
);
}
}
这是因为使用新的 React extends Component
语法,他们在组件创建时删除了自动绑定,就像他们在旧的.createClass
语法中一样。默认情况下,使用 es2015 中的类语法,您必须将其绑定到方法才能使用类 this,因此此处也是如此。
您可以在这篇更新日志博客文章中阅读有关 React 做出此更改的决定。
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- delete关键字在全局变量上的不同行为
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- JavaScript 中的嵌套函数和 “this” 关键字
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- IIS动态HTTP响应标头
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Ajax响应转换
- 使用“this”关键字响应类行为
- 正在JSON响应中搜索关键字