1. JSX 문법
const element = <h1>Hello, world!</h1>;
마치 마크업 문법같이 생긴 이 문법은 JSX라고 한다.
JSX는 React.createElement() 함수 호출로 바뀐다.
const element = (
<h1 className="greeting">
Hello, world!
</h1>
);
const element = React.createElement(
'h1',
{className: 'greeting'},
'Hello, world!'
);
위의 두 가지 코드는 동일하다.
첫 번째 코드는 JSX로 표현한 코드고 두 번째 코드는 React.createElement()를 사용한 코드다.
JSX를 사용해서 쓰는것이 코드의 가독성도 좋고 HTML과 모습이 닮아서 보다 쉽게 코드를 작성할 수 있다.
2. 엘리먼트 렌더링
처음 리액트 프로젝트를 만들면
index.html 안에 <div id="root"></div> 가 있는 걸 볼 수있다.
그리고 이 html에 연결된 index.js 파일에
ReactDOM.createRoot()를 볼 수 있는다
React 엘리먼트를 렌더링 ( 화면에 띄우기 ) 위해서는 DOM 엘리먼트를 .createRoot()에 전달한 다음에
React 엘리먼트를 root.render() 에 전달해야 한다.
렌더링 된 엘리먼트 업데이트하기
React 엘리먼트는 불변객체이다. 엘리먼트는 마치 영화의 한 프레임처럼 특정 시점의 UI를 보여준다.
그러면 UI를 새로 업데이트는 어떻게 할까..?
지금까지 본 내용으로는 새로운 엘리먼트를 생성하고 이를 root.render()로 전달해서 계속 호출하는 방법만 있다.
예를 들어서 실시간으로 시간을 1초단위로 보고싶다면?
const root = ReactDOM.createRoot(
document.getElementById('root')
);
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
root.render(element);
}
setInterval(tick, 1000);
이렇게 setInterval을 통해서 콜백함수로 1초마다 root.render()에 엘리먼트를 넣어주면서 계속 호출해줘야 한다.
실무에서 React를 사용할 때는 root.render()를 한 번만 호출한다.
한 번만 호출하는데 어떻게 화면이 계속 바뀌지?
이에 대한 해답은 후에 배울 State와 생명주기에서 어떻게 되는지 알아보자!
그리고 위의 코드를 실행해보면 Hello World는 그대로이지만 시간을 나타내는 부분만 업데이트 하는 모습을 볼 수 있다.(F12 또는 개발자 도구를 켜서 Elements를 보면 1초마다 업데이트 되는 걸 볼 수 있음)
React DOM은 이전의 엘리먼트와 비교하고 필요한 부분만 DOM을 업데이트 해준다.
오늘은 JSX와 엘리먼트 렌더링에 대해서 살펴봤다!
Ref :
https://ko.legacy.reactjs.org/
'JS > React' 카테고리의 다른 글
React 공식문서 보기 - 3 (Component, props) (0) | 2024.03.14 |
---|---|
React 공식문서 보기 - 1 (React 앱 만들기, Hello World) (0) | 2024.03.12 |
React : component에게 인자 넘겨주기 - props (1) | 2024.01.11 |
React에서 useState사용하기 (1) | 2024.01.07 |
React에서 createElement 사용하기 (0) | 2024.01.04 |