1. Components

  - Components는 구성 요소라는 의미를 가지고 있다. 즉 React에서 Components는 React를 구성하는 구성 요소라고 볼 수 있다.

  - React의 모든 Page는 Components로 구성되어 있다.

  - 하나의 Components는 여러 개의 Components의 조합으로 구성될 수 있다. 이것을 컴포넌트 기반(Components-Based)이라고 한다. 즉 리액트는 컴포넌트 기반대로 되어있다고 생각하면 된다.

 

  - 자바스크립트 함수가 입력을 받은 후 출력하는 것처럼, React Component의 입력은 Props이고, 출력은 React Element이라고 볼 수 있다. 

 

  - image와 title이 적혀있는 Props들이 Component를 통해 각각의 '유머', '과학 및 기술', '여행'이라는 element가 나왔다.

 

2. Props

  - Props은 Read-Only 속성으로, 값을 변경할 수 없다.

  - 모든 React Components는 Props에 관해서는 pure 함수 같은 역할을 해야 한다.

=> Props를 변경할 순 없으며, 같은 Props에 대해선 항상 같은 결과를 보여줘야 된다.

 

여기서 Pure 함수는 순수 함수를 의미한다.

function sum(a, b) {
	return a + b;
}

  - 순수 함수는 input을 변경하지 않으며, 같은 input에 대해서는 항상 같은 output을 리턴한다.

 

3. Component 종류

 Component 만드는 방법은 Function Component와 Class Component 2가지가 있다.

 

3-1 Function Components

function name(props) {
	return <h1>Hello, {props.name}</h1>;
}

  - 컴포넌트는 Props -> React Component -> React Element 순으로 작동한다. 즉 props를 인자값으로 받아 출력하므로 위 코드는 Function Components라고 볼 수 있다.

  - 자바스크립트 함수와 매우 비슷하므로 낯이 익다. 

 

3-2 Class Component

class name extends React.Component { //React.Componet 상속받았다.
	render(){
		return <h1>Hello, {this.props.name}</h1> // props를 사용해서 React Element를 리턴한다.
	}
}

  - ES6에 나오는 class를 사용해서 Component를 정의한다.

 

※Component 이름은 항상 대문자로 시작한다

 

4. component 렌더링

4-1 DOM 태그를 사용한 element

const element = <div />;

 

4-2 사용자가 정의한 Component를 사용한 element

const element = <Hello name="Ptero" />;

 

4-3 참고 예제

function Hello(props){ // Hello Component에 {name: 'Ptero'}를 props에 넣는다고 가정하자.
	return <h1>Hello, {props.name}</h1>; //"Hello, Ptero"라는 문자열이 들어간 element를 return한다.
}

const element = <Hello name="Ptero" />;
ReactDOM.render(element, document.getElementById('root'));

  - ReactDOM.render 함수에서는 return 된 element를 가지고 root DOM 노드에 변경된 부분을 계산해서 DOM을 업데이트한다.

 

props에 값을 받는다 -> Hello Component를 return 한다. -> ReactDOM 함수는 return 된 element를 Root DOM Node에 변경된 부분을 계산해서 업데이트한다.

 

5. Component 합성

  - Component 안에 다른 Component를 쓸 수 있다.

  - 복잡한 화면을 여러 개의 Component로 나눠서 구현이 가능하다.

 

function Hello(props){
	return <h1>Hello, {props.name}</h1>;
}

function App(){
	return(
		<div>
			<Hello name="Ptero" />
			<Hello name="Saurs" />
			<Hello name="Hong"  />
		</div>
		);
}

ReactDOM.render(<App />, document.getElementById('root'));

  - App Component를 보면 Hello Component가 입력되어 있다. App component를 rendering을 하면 위 사진과 같은 구조로 출력된다.

'FrontEnd > React' 카테고리의 다른 글

[React] Component 생성  (0) 2021.09.05
[React] state , Lifecycle  (0) 2021.08.24
[React] 시계  (0) 2021.08.19
[React] 리액트(React)  (0) 2021.08.17
[React] 구름(goorm) IDE를 이용한 리액트 구동  (0) 2021.08.15