反应组件中的绑定函数
bind function in react component
我在 React 中创建了一个组件,并且在其中使用了某个函数例如
class A {
changeDid(e) {
}
render() {
return (
<input type="text" onChange{this.changeDid.bind(this)}>
)
}
}
我想了解一行 this.changeDid.bind(this)谁能帮我这个??
bind()
方法创建一个新函数,该函数在调用时具有其 此关键字设置为提供的值,具有给定的序列 调用新函数时提供的任何参数前面的参数。
this.changeDid.bind(this)
的意思是,在changeDid
this
中会被引用A
,所以你可以得到与A
相关的方法。
class A {
changeDid(e) {
this.someMethod();
}
someMethod() {
// ...
}
render() {
return (
<input type="text" onChange={this.changeDid.bind(this)}>
)
}
}
但是如果你传递给onChange={ this.changeDid }
,this
将引用全局范围(在浏览器中它是window
,或者如果你使用strict mode
,则undefined
),前面的例子将不起作用,因为someMethod
存在于A
中,但不存在于window
我为您创建了一个简单的例子。
class Example extends React.Component {
constructor(){
this.state = {
item : 'hello World'
}
/* this.click = this.click.bind(this) */
}
click(){
console.log(this)
console.log(this.state.item)
}
render(){
return <div>
<button onClick={this.click}>Click Me</button>
</div>
}
}
React.render(<Example />, document.getElementById('container'));
因此,如果您单击一个按钮,您将在console
中得到下一个:
console.log(this) // undefined
console.log(this.state.item) // Type Error, Cannot read property 'state' of undefined
发生这种情况是因为click
方法内部this
链接到undefined
,但我们想显示我们的states
。
你怎么能解决它?为了确保我们在方法中获得正确的上下文click
我们bind(this)
它。/* this.click = this.click.bind(this) */
从此行中删除注释,您将获得方法的正确行为。
工作示例小提琴
我希望它能帮助你。
谢谢。
相关文章:
- 如何在动态创建的节点上绑定函数
- 绑定函数时在IE7中未实现Javascript错误
- jQuery结合了2个绑定函数(类型错误:a是未定义的)
- Jquery函数无法处理动态加载的内容(不是绑定函数)
- 从console.log调用webpack绑定函数/类
- React没有绑定函数调用,尽管有相反的警告
- jQuery使用最后一个参数在Javascript循环中单击绑定函数
- 如何在React Native中为ListView中的每个元素绑定函数
- jquery绑定函数不起作用
- 具有绑定与未绑定函数的数组筛选器
- 绑定函数仅适用于最后一个元素
- 如何将新函数绑定到元素的 onclick 事件,并使其在所有其他绑定函数之前运行
- 绑定函数链接
- 动态 JS 拖动绑定函数限制在线拖动
- 绑定函数的返回语句中参数的推理是什么
- 在jQuery上动态绑定函数
- 确定 JavaScript 函数是否为绑定函数
- jQuery 绑定函数不起作用
- 反应组件中的绑定函数
- Javascript 绑定函数到 Ajax 加载事件