今天我的一个朋友在做react时出现的一个错误,当然他才接触react没多久出现的错误的地方如下:
先解释下为什么会出现这个错误,因为函数执行是有一定的优先级的,当你点击事件的时候其实是先执行的this.handleClick() 这个函数,而这个函数没返回值,所以执行完成后返回undefined,这时候在执行this.handleClick().bind()时其实是在执行 undefined.bind(this)所以程序报错
我朋友知道错误后又进行了如下的修改
render() {
return (
<div>
<h2>我是App</h2>
<button onClick={() => this.handleClick.bind(this, '我是参数')}>click me</button>
</div>
)
}
这紧接着出现了另外一个问题就是当点击按钮时函数未执行的情况,这里贴一下MDN上关于bind的解释
也就是说bind会返回一个全新的函数,用箭头函数返回的这个新的函数并没有执行
用箭头函数加bind的正确的写法是
//让bind返回的函数立即执行
onClick={() => this.handleClick.bind(this, '我是参数')()}