react
[react] props를 통해 component에 값 전달하기
beaksul
2022. 11. 15. 18:12
props는 컴포넌트에서 컴포넌트로 전달하는 데이터다.
아래의 코드를 실행하면 화면에 Hello가 뜨게 된다.
import React, {Component} from 'react';
import './App.css';
class Subject extends Component {
render() {
return (
<header>
<h1>Hello</h1>
</header>
);
}
}
class App extends Component {
render() {
return (
<div className="App">
<Subject></Subject>
</div>
);
}
}
export default App;
Hello만을 출력하는 컴포넌트인 Subject가 아닌
내가 지정하는 값을 출력하는 Subject로 만들어 재사용성을 높이고 싶다면
props를 사용하면 된다!
- 클래스 컴포넌트
import React, {Component} from 'react';
import './App.css';
class Subject extends Component {
render() {
return (
<header>
<h1>{this.props.title}</h1>
</header>
);
}
}
class App extends Component {
render() {
return (
<div className="App">
<Subject title="happy"></Subject>
<Subject title="code"></Subject>
</div>
);
}
}
export default App;
이렇게 작성해주면 화면에는 happy와 code가 뜨게 된다.
- 함수형 컴포넌트
import React, {Component} from 'react';
import './App.css';
function Subject(props) {
return (
<header>
<h1>{this.props.title}</h1>
</header>
);
}
function App() {
return (
<div>
<Subject title="happy"></Subject>
<Subject title="code"></Subject>
</div>
);
}
export default App;
객체 인자를 구조 분해 할당하여 props를 받아 올 수도 있다.
function Subject(title) {
return (
<header>
<h1>{title}</h1>
</header>
);
}
defultProps를 사용해 props의 초기값을 지정할 수 있다.
Subject.defaultProps = {
title: 'hihi',
}
props-types 라이브러리를 통해 props의 타입을 지정하고 확인할 수 있다.
(타입이 다른 값 입력시 에러)
isRequired는 필수 입력 값이라는 뜻이다.
Subject.propsTypes = {
title: PropTypes.string.isRequired,
}
클래스형 컴포넌트에서는 클래스 내부에서도 지정 가능하다.
class Subject extends Component {
Subject.defaultProps = {
title: 'hihi',
};
Subject.propsTypes = {
title: PropTypes.string.isRequired,
};
render() {
const { title } = this.props;
return (
<header>
<h1>{title}</h1>
</header>
);
}
}