class Profile extends React.Component {
constructor(){
super();
this.state = { name : 'Kim', age : 30 }
}
changeName(){ this.setState( {name : 'Park'} ) }
render(){
return ( <div> <h3> 저는 { this.state.name } 입니다 </h3>
<button onClick={ this.changeName }> 버튼 </button> </div> )
}
}
(코드블럭이 어디있는지 몰라서 그냥 올립니다ㅜ React강의 part 1 맨 마지막 강의 예제코드입니다)
ES6강의에서 this 에 관한 4가지 설명을 듣고 react에 쓰는 this에 생각해봤는데요,
제가 이해한 부분입니다. 잘못 이해한 부분이 있는지 질문드립니다
this.state.name은 생성자에서의 this를 가리켜 정상적으로 데이터바인딩이 된다.
button 이벤트리스너에 있는 this는 이벤트가 발생하는 곳을 의미하고, 여기서 changeName이라는 함수로 가서 state가 변경되어야 하지만, 발생하는 오류는 undefined오류가 발생한다.
이 원인은 새로 함수가 정의되면서 this가 가리키는것은 '주인님'이 없으므로 window를 가리키는데 이는 setState라는 내장함수가 없기 때문이다. ( 리액트에서도 window인가요 ? )
이때, bind(this)를 붙어주면 되는데, 여기서의this는 부모인 React에서 받아온(super()) constructor를 가리키고, state와 연결돼서 내장함수가 적용되는 것이다.