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 case05. 주의사항
// 잘못된 예시
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>
);
};
{/* 코멘트 */}으로 표기한다.