JSX는 React Element를 생성한다. javascript의 확장문법이다. (즉, js 문법을 사용할 수 있음.)
렌더링하는 UI와 로직을 함께 넣어 컴포넌트라고 부르는 느슨하게 연결된 유닛으로 구분한다.
JSX는 마크업과 로직을 같이 사용할 수 있는 언어.
const name = '철현 박';
const element = <h1>Hello, {name}</h1>;
const root = ReactDOM.createRoot(document.getElementById('root'));
const formatName = (user) => user.firstName + ' ' + user.lastName;
const user = {
firstName: "철현",
lastName: "박"
}
const element = <h1>Hello, {formatName(user)}</h1>;
root.render(element);
const root = ReactDOM.createRoot(document.getElementById('root'));
const formatName = (user) => <h1>{user.firstName} {user.lastName}</h1> // 값으로써 사용.
const user = {
firstName: "철현",
lastName: "박"
}
root.render(formatName(user));
const achorElement = <a href="<https://www.reactjs.org>"> link </a>;
const imgElement = <img src={user.avatarUrl}></img>;
💡HTML attribute가 camelCase로 작성된다. 예)
class
⇒className
/>
)const element = <img src={user.avatarUrl} />;
어떻게 막는지 해당 글 참고 ⇒ https://onlydev.tistory.com/78
React.createElement()
로 호출된 객체로 컴파일 되며, 해당 메소드를 통해 다음과 같은 객체를 생성합니다.(단순한 버전)// -- jsx 표현 --- //
const element = (
<h1 className="greeting">
Hello, world!
</h1>
);
// --- babel로 컴파일 --- //
const element = React.createElement(
'h1',
{className: 'greeting'},
'Hello, world!'
);
// --- 생성된 객체 --- //
const element = {
type: 'h1',
props: {
className: 'greeting',
children: 'Hello, world!'
}
};
위와 같은 객체를 React element라고 하고 React는 이 객체를 읽어 DOM을 구성한다.