Я создал простой пример для вас.
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) */
, и вы получите правильное поведение вашего метода.
Практический пример fiddle
Я надеюсь, что это поможет.
Спасибо.