본문 바로가기

JS/React

React에서 createElement 사용하기

 

1. React를 사용해서 페이지를 렌더링 하기 위해서는 React와 ReactDom을 가져온다.

 

[index.html]

<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel='stylesheet' href='index.css'/>
    <title>Document</title>
    </head>
    <body>
        <div id="root"></div>
    </body>
    <script src='https://unpkg.com/react@17.0.2/umd/react.production.min.js'></script>
    <script src='https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js'></script>
    <script src='https://unpkg.com/@babel/standalone/babel.min.js'></script>
    <script src='index.js' type='text/babel'></script>
</html>

 

2. React.createElement 함수를 통해서 원하는 html 요소를 생성한다.

 

[index.js]

const span = React.createElement('h3', {
    onMouseEnter: () => console.log('mouse enter')
}, 'TEST')

const button = React.createElement('button', {
    onClick: () => {console.log('clicked')}
}, 'Click me')

 

createElement의 첫 번째 인자로는 html의 태그를 작성한다.

createElement의 두 번째 인자로는 props를 작성한다.

예를 들어, class = 'title' , onClick : () => {console.log('clicked')} 등 클래스, 이벤트, 스타일과 같은 props를 지정해줄 수 있다.

createElement의 세 번째 인자로는 innerText의 내용을 작성할 수 있다.

 

const button = React.createElement('button', {
    onClick: () => {console.log('clicked')}
}, 'Click me')

 

이렇게 만든 버튼은 <button>Click me</button> 라고 볼 수 있고, click이벤트를 가지는 요소이다.

 

3. 원하는 장소에 ReactDom.render를 이용해 렌더링 한다.

[index.js]

 

const container = React.createElement('div', null, [span, button])
ReactDOM.render(container, root);

 

위에서 만든 span과 button을 포함하는 container를 생성한다.

생성한 container를 root 아래에 위치 시킨다.

 

 

createElement를 이용해서 만드는 것은 대부분의 개발자들이 하지 않는다.

이것보다 더 직관적이고 쉬운 방법이 있으니까

 

하지만 더 쉬운 방법도 결국엔 개념은 createElement를 활용한 방식이다.

따라서 다음시간에는 대부분의 개발자들이 사용하는 react의 방식대로 표현해볼 생각이다.

그리고 쉬운 방식이 결국에는 오늘 배운 createElement에 귀결되는 과정까지 살펴볼 계획이다.

Ref: https://nomadcoders.co/react-for-beginners