기존의 웹 서비스들은 웹페이지에서 정말 작은 부분이 업데이트 되어도 페이지의 전체를 리로딩 해야한다.
React는 컴포넌트 단위로 페이지 새로 고침이 가능하여 리소스 절약이 가능하고, 사용자에게 부드럽고 빠른 경험을 제공한다.
독립적으로 구성하여 재사용이 편리 합니다.
데이터는 속성(props) 으로 받고, 상태(state)에 따라 View 를 변화 합니다.
PascalCase 이름을 사용해야 한다.
파일명도 동일한 문법으로 사용한다.
ex) MainHeader (O) / mainHeader (X)
3. 컴포넌트 - 함수형 내부 정의
src/App.js
컴포넌트를 함수 내부에도 정의 가능하지만 return이 여러 개로 보이고 가독성이 떨어져서 파일로 나눠서 사용한다.
import logo from './logo.svg';
import './App.css';
function App() {
// 컴포넌트를 함수 내부에도 정의 가능하지만 return이 여러 개로 보이고
// 가독성이 떨어져서 파일로 나눠서 사용한다.
function MainHeader() {
return (
<h1>함수형 내부 정의</h1>
)
}
return (
<div className="App">
<MainHeader />
</div>
);
}
export default App;
4. Components 분리 작업
component 폴더 생성
src/App.js
import logo from './logo.svg';
import './App.css';
import MainHeader from './components/MainHeader';
function App() {
return (
<div className="App">
<MainHeader />
</div>
);
}
export default App;
import './App.css';
import ImgComponent from './components/ImgComponent';
import BtnToNaver from './components/BtnToNaver';
function App() {
return (
<div className="App">
<ImgComponent />
<div>
<BtnToNaver />
</div>
</div>
);
}
export default App;
src/components/ImgComponents.js
함수형 컴포넌트
import logo from '../mococo-01.png';
// JavaScript로 import를 하는 경우에는 src 폴더 내부까지만 사용이 가능하다.
// 다음과 같이 public 폴더 접근하면 Error가 발생한다.
// import logo from "../../public/logo192.png";
function ImgComponent () {
return (
<img src={logo} alt='이미지' />
// 해당 설정으로 public 폴더에 바로 접근 할 수 있다.
// <img src="/logo192.png" alt='이미지' />
)
}
export default ImgComponent;
src/components/BtnToNaver.js
클래스형 컴포넌트
// import React, {Component} from 'react';
import {Component} from 'react';
class BtnToNaver extends Component {
render() {
return (
<button><a
href="https://www.naver.com"
target="_blank"
>네이버 페이지</a></button>
)
}
}
export default BtnToNaver;