Front-end/React
[React]리액트의 Component 정리
영벨롭
2022. 5. 25. 20:37
https://reactjs.org/docs/components-and-props.html
[ Component 란? ]
React는 컴퍼넌트 기반의 개발(Component Based Development)이라고도 불립니다.
컴퍼넌트 Component는 UI를 독립적이고, 재사용이 가능한 개별적인 조각으로 나눌 수 있게 하는 리액트 앱을 이루는 최소한의 단위입니다. 문서(html) + 스타일(css) + 동작(js)를 합쳐서 만든 일종의 태그라고도 할 수 있습니다.
리액트 element는 DOM 태그로 나타낼수도 있지만, 사용자가 정의한 Component로도 정의할 수 있습니다.
이름은 항상 대문자로 시작하며, 소문자로 시작하는 컴퍼넌트는 DOM 태그로 취급합니다.
Component는 자바스크립트의 함수와 비슷하며, props 라고 하는 독자적인 입력값을 인수로 받습니다. 그리고는 화면에 보여져야할 동작을 나타내는 리액트 element를 반환합니다.
★ props
리액트가 컴퍼넌트를 나타내는 element를 발견하면, JSX attribute들과 children을 하나의 객체(object) 형태로 이 컴퍼넌트에 전달합니다.
이 객체를 'props'라고 부르며, props는 수정이 불가한 읽기 전용의 객체입니다.
function Hello(props){ // Component 컴퍼넌트
return (
<>
// props는 Read-only! props.name += 'hi';와 같이 수정불가!
<h1>Hello { props.name }</h1>
</>
)
}
function App() {
const element = <div>I'm DOM tag</div> // DOM 태그
return (
<div>
{ element } // DOM 태그 element
<Hello name='Neo' /> // 컴퍼넌트 element
</div>
);
}
[ Component 종류 ]
1. 함수형 컴퍼넌트 Stateless Functional Component
기본형 |
import React from "react"; function 컴퍼넌트이름() { return ( ... ); }; export default 컴퍼넌트이름; |
// src/Hello.jsx
import React from "react";
function Hello() {
return (
<>
<h1>Hello World</h1>
</>
);
};
export default Hello;
// src/App.jsx
import './App.css';
import Hello from './Hello.jsx';
function App() {
return (
<div>
<Hello />
</div>
);
}
export default App;
2. 클래스형 컴퍼넌트 Stateless Functional Component
// src/Hello.jsx
import React from "react";
class Hello extends React.Component {
constructor(props){ // 생성자
super(props);
}
componentDidMount(){
// 상속받은 생명주기 함수
}
render() { // render()는 필수
return (
<>
<h1>Hello World</h1>
</>
);
};
};
export default Hello;
반응형