Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 반복줄이기
- 타입좁히기
- 2022
- 티스토리꾸미기
- 공통컴포넌트
- Chart.js
- CSS
- 리액트
- utilty type
- 성능최적화
- 제네릭
- vue.js
- react
- click and drag
- 개발콘텐츠
- typescript
- const 단언문
- reactjs
- 누구나 자료구조와 알고리즘
- JS console
- 레이아웃쪼개기
- 커스텀
- 폰트적용하기
- 타입스크립트
- React Native
- javascript
- TSDoc
- React.js
- NonNullable
- returnType
Archives
- Today
- Total
몽땅뚝딱 개발자
[React] 클래스형 컴포넌트 - Props / 자료형 선언 / 필수값과 기본값 지정 본문
Development/React.js · Next.js
[React] 클래스형 컴포넌트 - Props / 자료형 선언 / 필수값과 기본값 지정
레오나르도 다빈츠 2022. 8. 20. 15:49
드뎌.. 리액트 공부 다시 시작..! 🥺
◽ Props
데이터를 수정해야할 경우 props 자체가 아닌 컴포넌트 내부 변수(예제에서는 "props_value"라는 변수)에 옮겨 가공한다.
import React from "react";
import './App.css';
import ChildComp from './ChildComp'
function App() {
return (
// JSX
<div>
<h1>Start React</h1>
<ChildComp test_value="this is props" />
</div>
);
}
export default App;
import React, { Component } from "react";
class ChildComp extends Component {
render() {
// props 인자 받아오기
let props_value = this.props.test_value;
props_value += ' from App.js'
return (
<div>
{ props_value }
</div>
);
}
}
export default ChildComp
타입스크립트처럼 자료형도 지정할 수 있었다.
npm install --save prop-types
◽ Props 자료형 선언
import React from "react";
import './App.css';
import ChildComp from './ChildComp'
function App() {
return (
<div>
<h1>Start React</h1>
<ChildComp
val_string="string"
val_number={100}
val_boolean={true}
val_array={[0, 1, 2]}
val_object={{react: '리액트'}}
val_function={console.log("테스트")}
/>
</div>
);
}
export default App;
import React, { Component } from "react";
import datatype from 'prop-types'
class ChildComp extends Component {
render() {
console.log(this.props);
let {
val_string, val_number, val_boolean, val_array, val_object, val_function
} = this.props
return (
<div style={{ padding: '20px' }}>
<p>val_string: {val_string}</p>
<p>val_number: {val_number}</p>
<p>val_boolean: {val_boolean.toString()}</p>
<p>val_array: {val_array.toString()}</p>
<p>val_object: {JSON.stringify(val_object)}</p>
<p>val_function: {val_function}</p>
</div>
);
}
}
// props의 자료형을 각각 지정해 줄 수 있다.
ChildComp.propTypes = {
val_string: datatype.string,
val_number: datatype.number,
val_boolean: datatype.bool,
val_array: datatype.array,
val_object: datatype.object,
val_function: datatype.func,
}
export default ChildComp
◽ Prop 필수값으로 지정하기
변수 뒤에 isRequired를 붙여준다.
ChildComp.propTypes = {
val_required: datatype.number.isRequired,
}
◽ Prop 기본값 지정하기
ChildComp.defaultProps = {
val_number: 0,
}
Vue.js의 slot 처럼 노드를 전달할 수도 있다.
this.props.children로 접근한다.
import React from "react";
import './App.css';
import ChildComp from './ChildComp'
function App() {
return (
<div>
<h1>React</h1>
<ChildComp>
<span>안녕!</span>
</ChildComp>
</div>
);
}
export default App;
import React, { Component } from "react";
class ChildComp extends Component {
render() {
return (
<div style={{ padding: '20px' }}>
{this.props.children}
</div>
);
}
}
export default ChildComp
출처
이정열, 초보자를 위한 리액트 200제 (정보문화사, 2021)
'Development > React.js · Next.js' 카테고리의 다른 글
[React] 함수형 컴포넌트 (0) | 2022.08.28 |
---|---|
[React] 클래스형 컴포넌트 - Component, PureComponent / shallow-equal (0) | 2022.08.28 |
[React] 클래스형 컴포넌트 - state / state 값 변경하기 / setState() / forceUpdate() (0) | 2022.08.22 |
[React] 기본개념 (0) | 2022.05.22 |
[React] State를 올바르게 사용하는 방법 (0) | 2022.05.20 |
Comments