반응형
- 링크를 클릭하면 다른 메시지가 출력되도록 함.
- React 에서는 Props나 State값이 바뀌면, 그 state를 가지고 있는 컴포넌트의 render 함수가 다시 호출된다.
- 아래는 event의 설치와 event의 기본적인 동작을 방지하는 code 이다.
//App.js 중에서 render()
render() {
console.log('App render')
var _title, _desc = null;
if (this.state.mode === 'welcome'){
_title = this.state.welcome.title;
_desc = this.state.welcome.desc;
} else if (this.state.mode === 'read'){
_title = this.state.contents[0].title;
_desc = this.state.contents[0].desc;
}
return (
<div className="App">
{/*<Subject
title = {this.state.subject.title}
sub= {this.state.subject.sub}></Subject>*/}
// 이 부분을 주시하자
<header>
<h1><a href = "/" onClick={function(e){
console.log(e);
e.preventDefault();
// this.state.mode = 'welcome'
}}>{this.state.subject.title}</a></h1>
{this.state.subject.sub}
</header>
<TOC data={this.state.contents}></TOC>
<Content></Content>
</div>
);
}
- code 상의 주석처리 된 this.state.mode = 'welcome'는 오류가 나는데 그 이유는
이벤트가 호출됐을때 실행되는 함수 안에서는 this의 값이 컴포넌트를 가리키지 않고 아무것도 가리키지 않고 있다.
> .bind(this) 로 사용하면 오류가 해결된다.
이것을 고쳐도 똑같이 오류가 발생하는데, 이것은 리액트가 코드가 바뀌었다는것을 모르기 때문이다.
> this.setState 라는 함수를 사용해야 한다.
반응형
'웹서비스 개발 > React-App 개발' 카테고리의 다른 글
컴포넌트 이벤트 생성 (0) | 2021.04.30 |
---|---|
Event 2. Bind & setState (0) | 2021.04.30 |
State 개발 (0) | 2021.04.26 |
Component를 파일로 분리하기 (0) | 2021.04.25 |
Props & React Developer Tools (0) | 2021.04.24 |
댓글