01. 컴포넌트 Components 란?
UI를 재사용이 가능한 개별 조각으로 나누어, 개별적으로 관리하는 것을 뜻한다. JavaScript의 함수처럼 작동하며, props
를 입력받아 React 엘리먼트
를 반환 한다. 즉, 컴포넌트는 데이터( props
)를 입력받아 상태에 따라 DOM Node( React 엘리먼트
)를 출력하는 함수이다.
과거 웹 페이지는 웹 개발자가 컨텐츠를 마크업(html)한 다음 JavaScript 코드를 넣어 상호작용이 가능하도록 추가하는 방식이었지만, 이는 많은 사이트와 앱에서 상호작용을 해야하는 현재와 적합하지 않다.( 소셜미디어를 생각해보자! 수많은 데이터의 생성/수정/삭제가 동시에 이뤄지고 있다. ) 그래서 React는 이미 작성한 컴포넌트를 재사용하여 많은 디자인을 구성하는 컴포넌트 기반 체계를 사용하고 있다.
02. 함수형 컴포넌트
컴포넌트를 정의하는 가장 간단한 방법으로, JavaScript 함수와 유사하다.
//함수형 컴포넌트의 구성
const App = () => {
//1. 컴포넌트 표현과 관련된 JavaScript 코드 작성
return(
//2. JSX 영역 : React 엘리먼트 반환 (html과 유사)
)
}
//example
const Welcome = (props) => {
return (
<h1>Hello, {props.name}!</h1>
);
}
03. 클래스형 컴포넌트
ES6문법의 Class
문법을 사용하여 컴포넌트를 정의할 수 있다.
//클래스형 컴포넌트의 구성
class App extends React.Component {
// 생성자 함수
constructor(props) {
super(props);
}
//render 함수 (필수!)
render() {
return (
React 엘리먼트 반환
)
}
}
//example
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
04. Naming Conventions
Pascal case
▶️ Header.jsxCamel case
▶️ fetchApi.jsPascal case
▶️ Header.cssCamel case
또는 Kebab case
05. 주의사항
// 잘못된 예시
return
<div>Hello</div>; // 이 코드는 실행되지 않음
// 올바른 예시
return (
<div>Hello</div>
);
//잘못된 예시
function Parent() {
...
function Children() {
...
}
}
//정확한 예시
function Parent() {
// ...
}
function Children() {
// ...
}
01. JSX 란?
JSX는 JavaScript를 확장한 문법으로, JavaScript 파일을 HTML과 비슷하게 마크업을 작성할 수 있도록 한다. 즉, 하나의 파일에 자바스크립트와 HTML을 동시에 작성하여 편리하다. 하지만 JSX는 HTML이 아니며, React가 JavaScript로 컴파일하여 DOM을 조작한다.
02. HTML ▶️ JSX 변환
HTML 마크업 방식으로 JSX에 그대로 작성하면 오류가 발생한다. JSX는 브라우저가 'babel'을 이용해 JS처럼 인식하기 때문에 특별한 규칙(아래 참조)이 존재한다.
변환기를 사용하면 간편하게 적용할 수 있다.
03. JSX 규칙
<> </>
로 대체 가능하다.//잘못된 예시
...
return(
<div> 첫번째 줄입니다.</div>
<div> 두번째 줄입니다.</div>
)
//정확한 예시
...
return(
<>
<div> 첫번째 줄입니다.</div>
<div> 두번째 줄입니다.</div>
</> //<= 부모태그로 감싸주기
)
{}
안에 넣어준다.Camel case
프로퍼티 명명 규칙을 사용한다.id=""
로 표기하고, class를 줄 때는 className=""
으로 표기한다.{{}}
이중 중괄호를 사용한다. JS 문법 + 객체로 속성이 들어가기 때문이다. 스타일 지정은 인라인으로 작성하는 방법과 JS 영역에 객체로 제작하여 넣는 방법이 있다.//스타일 지정 - 인라인
const App = () => {
return(
<div style={{backgroundColor: "red", color: "white"}}></div>
)
}
//스타일 지정 - 객체로 제작
const App = () => {
const makeRed = {
backgroundColor: "red",
color:"white",
}
return(
<div style={makeRed}></div>
)
}
if구문
과 for구문
은 JavaScript 표현식이 아니기 때문에 JSX 내부 자바스크립트 표현식에서는 사용할 수 없다. 그렇기 때문에, {}
안에서 삼항 연산자를 주로 사용 한다.const App = ({ isLoggedIn }) => {
return (
<div>
{isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please log in.</h1>}
</div>
);
};
{/* 코멘트 */}
으로 표기한다.