2020/12/31 - [React] - [React] Component 에서 props 사용하기
[React] Component 에서 props 사용하기
2020/12/31 - [React] - [React] Component 생성하고 모듈화하기 [React] Component 생성하고 모듈화하기 2020/12/30 - [React] - [React] 프로젝트 생성하고 실행하기 Component 생성 및 모듈화 이전 글에서 프로..
ddeck.tistory.com
Component 에서 State 사용하기
컴포넌트에서 유동적인 데이터를 다룰 때, state 를 사용한다.
React.js 어플리케이션을 만들 땐, state를 사용하는 컴포넌트의 갯수를 최소화 해야한다.
예를들어, 10 개의 컴포넌트에서 유동적인 데이터를 사용 하게 될 땐, 각 데이터에 state를 사용 할 게 아니라, props 를 사용하고 10 개의 컴포넌트를 포함시키는 container 컴포넌트를 사용하는것이 효율적이다.
사용법
src/components/Example.js
import React from 'react';
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
header: "Example Header state",
content: "Example Content State"
};
}
updateHeader(text){
this.setState({
header: "Example Header has changed"
});
}
render() {
return (
<div>
<h1>{this.state.header}</h1>
<h2>{this.state.content}</h2>
<button onClick={this.updateHeader.bind(this)}>Update</button>
</div>
);
}
}
export default Example;
- state 의 초기 값을 설정 할 때는 constructor(생성자) 메소드에서 this.state= { } 를 통하여 설정한다.
- state 를 렌더링 할 때는 { this.state.stateName } 을 사용한다.
- state 를 업데이트 할 때는 this.setState() 메소드를 사용한다. ES6 class에선 auto binding이 되지 않으므로, setState 메소드를 사용 하게 될 메소드를 bind 해주어야 한다. (bind 하지 않으면 React Component 가 가지고있는 멤버 함수 및 객체에 접근 할 수 없다.)
적용하기
src/components/Example2.js
import React from 'react';
class Example2 extends React.Component {
constructor(props){
super(props);
this.updateNumber = this.updateNumber.bind(this);
}
updateNumber(){
this.props.onUpdate();
}
render(){
return (
<div>
<h1>number: { this.props.number }</h1>
<button onClick={this.updateNumber}>click</button>
</div>
);
}
}
export default Example2;
기본값을 나타내는 h1 element와, 클릭 하면 1씩 더하는 button element를 렌더링 한다.
이 컴포넌트에서는 두가지 prop을 사용한다.
- number: 기본 값
- onUpdate: function 형태의 prop 으로서, parent 컴포넌트에 정의된 메소드를 실행 할 수 있게 한다.
이제, parent 컴포넌트인 App 컴포넌트에서 RandomNumber 컴포넌트를 사용한다.
src/components/App.js
import React from 'react';
import Example2 from './Example2';
class App extends React.Component {
constructor(props){
super(props);
this.state = {
value: 0
};
this.updateValue = this.updateValue.bind(this);
}
updateValue(){
let number = this.state.value;
let plusNumber = number + 1;
this.setState({
value: plusNumber
});
}
render(){
return (
<div>
<Example2 number={this.state.value}
onUpdate={this.updateValue} />
</div>
);
}
}
export default App;
출력물
클릭 할때마다 숫자가 1씩 더해진다.
'React' 카테고리의 다른 글
[React] Router 를 사용하여 페이지 접근하기-떽떽대는 개발공부 (1) | 2021.01.04 |
---|---|
[React] a태그 사용해서 페이지 이동 및 함수 호출하기-떽떽대는 개발공부 (0) | 2021.01.02 |
[React] Component 에서 props 사용하기-떽떽대는 개발공부 (0) | 2020.12.31 |
[React] Component 생성하고 모듈화하기-떽떽대는 개발공부 (0) | 2020.12.31 |
[React] 프로젝트 생성하고 실행하기-떽떽대는 개발공부 (0) | 2020.12.30 |
댓글