JSX는 템플릿 언어가아닌 자바스크립트로 치환되는 언어이다
<MyButton color="blue" shadowSize={2}>
Click Me
</MyButton>
React.createElement(
MyButton,
{color: 'blue', shadowSize: 2},
'Click Me'
)
<div className="sidebar" />
React.createElement(
'div',
{className: 'sidebar'},
null
)
function Test() {
return <div>test</div>;
}
function hello() {
return <div>["hi","hello",<Test/>]</div>;
}
function Test() {
return React.createElement("div", null, "test");
}
function hello() {
return React.createElement("div", null, "[\\"hi\\",\\"hello\\",",
React.createElement(Test, null), "]");
}
참고 : 온라인 바벨 컴파일러
import React from 'react';
// React.createElement로 변환해야하기 때문에
// 리액트 라이브러리가 jsx 스코프 내에 import 된 상태에서만 jsx 사용이 가능하다
import CustomButton from './CustomButton';
function WarningButton() {
// return React.createElement(CustomButton, {color: 'red'}, null);
return <CustomButton color="red" />;
}
사용자 정의 컴포넌트는 꼭 대문자로 시작해야한다
Funtional Component는 props만가지고 화면 출력할때 Class Component 는 api불러오거나, 라이프 사이클 로직이 필요할떄, 근데 hooks쓰면 이제 Funtional Component 에서 다 처리 되니까 Funtional Component만 써도 문제 없다
둘의 차이는 hooks가 나온 시점에서 단순히 기능의 개수차이로 설명은 안된다