<button onClick={this.handleEvent}> //这里的this是toggle组件 为什么还需要在组件里绑定这个函数的this {this.state.isToggleOn === true ? 'on' : 'off'} </button>
Ich kann die Bindung hier nicht verstehen
光阴似箭催人老,日月如移越少年。
因为在class中声明函数,并不会自动绑定this对象
class
this
所以,你在onClick={this.handleEvent}的时候,分解成两步你就懂了:
onClick={this.handleEvent}
let handleEvent = this.handleEvent; ...onClick={handleEvent}...
所以,onClick调用的时候,handleEvent中的this会是undefined(根据文档)
onClick
handleEvent
undefined
所以,你需要bind一下, 那么里面的this就是当前组件啦。
bind
还有一种方便的写法,就是用箭头函数声明:
handleEvent = (e)=>{ } render(){ ...onClick={this.handleEvent}... }
因为handleEvent中this.setState...的this并没有绑定this
可以采用箭头函数的语法糖来绑定this
handleEvent = () => { this.setState... }
因为在
class
中声明函数,并不会自动绑定this
对象所以,你在
onClick={this.handleEvent}
的时候,分解成两步你就懂了:所以,
onClick
调用的时候,handleEvent
中的this
会是undefined
(根据文档)所以,你需要
bind
一下, 那么里面的this
就是当前组件啦。还有一种方便的写法,就是用箭头函数声明:
因为handleEvent中this.setState...
的this并没有绑定this
可以采用箭头函数的语法糖来绑定this