React/기초
[리액트 기초] 컴포넌트, 클래스형 컴포넌트, 함수형 컴포넌트, props, 구조분해, state,useState
Judith Hopps
2023. 3. 13. 13:30
반응형
컴포넌트
리액트로 만들어진 앱을 이루는 최소한의 단위
컴포넌트를 통해 UI를 재사용 가능한 개별적인 여러 조각으로 나누고, 각 조각을 개별적으로 살펴볼 수 있습니다.
예시 )
App.js
import TodoTemplate from "./TodoTemplate";
클래스형 컴포넌트
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
함수형 컴포넌트
const Welcome = ({props}) => {
return <h1>Hello, {props.name}</h1>; })
클래스형 컴포넌트와 함수형 컴포넌트 차이
클래스형 컴포넌트 | 함수형 컴포넌트 |
render 함수 필요하고 JSX 반환 | return문으로 실행 후 사라져 메모리 자원 절약 |
state 사용으로 상태 저장 | hook을 사용, 선언이 편함 |
결과물의 파일 크기와 성능 차이는 함수형 컴포넌트가 좋지만 차이가 적다.
props
사용법 )
App.js
import React from 'react';
import Component form "./Component"
const App = () => {
const name = "Judith-hopps"
return (
<div>
<Componenet name = {name} />
</div>
);
};
export default App;
Component.js
import React from 'react';
const Component = (props) => {
return (
<div>
{props.name}
</div>
);
};
export default Component
구조분해 = 비구조화 할당 방법
1. 함수형 컴포넌트 - props.name을 할당 또는 객체 디스트럭쳐링
후보1)
import React from 'react';
const Component = ({name}) => {
return (
<div>
{name}
</div>
);
};
export default Component
후보2)
import React from 'react';
const Component = (props) => {
const {name} = props
return (
<div>
{name}
</div>
);
};
export default Component
2. 클래스형 컴포넌트
render() {
{name} =this.props }
children : 태그 내용 확인
{props.children}
기본값 설정
Componenet.defaultProps = {
name : 'judith-hopps' }
타입 설정
import 'propTypes' from 'props-types'
Mycomponenet.propTypes = {
name : PropTypes.String }
필수 props
Component.propTypes{
name : PropTypes.String.isRequired
}
state
컴포넌트 내부에서 바꿀 수 있는 값
state는 컴포넌트에 대한 데이터 또는 정보를 포함하는 데 쓰이는 리액트 내장 객체다. 컴포넌트 상태는 시간이 지남에 따라 변경될 수 있다. 변경될 때마다 컴포넌트가 다시 렌더링된다. state 변경은 사용자 작업 또는 시스템 생성 이벤트에 대한 응답으로 발생할 수 있으며 이 변경은 컴포넌트의 동작, 렌더링 방법을 결정한다
클래스형 컴포넌트
1. constructor 사용
class Component extends Component {
constructor(props) {
super(props)
this.state = {number:3}
}
render () {
const {number} = this.state
return {number}
}
}
2. constructor 사용 X
class Component extends Component {
state = {number : 3}
render () {
const {number} = this.state
return {number}
}
}
함수형 컴포넌트 - useState
const Say = () => {
const [color,setColor] = useState('black');
return (
<>
<button onClick={()=>setColor("red")} />
<h1 style={{color}} > Text </h1>
</>
)
}
반응형