리액트와 JSX

Vanila Javascript를 이용한 Element 생성

<!DOCTYPE html> <html lang="en"> <body> <div id="root"></div> <script> const rootElement = document.getElementById("root"); const element = document.createElement("h1"); element.textContent = "Hello, world!"; rootElement.appendChild(element); </script> </body> </html>

React를 이용한 Element 생성

<!DOCTYPE html> <html lang="en"> <body> <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js" ></script> <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" ></script> <div id="root"></div> <script> const element = React.createElement("h1, { childeren: "Hello, world!"}) // const element = React.createElement("h1, null, "Hello, world!") ReactDOM.render(element, rootElement) </script> </body> </html>

JSX를 이용한 Element 생성

https://ko.reactjs.org/docs/introducing-jsx.html JSX란 const element = <h1>Hello, world!</h1> 과 같은 HTML 태그 처럼 쓸 수 있는 JavaScript 확장 문법 JSX를 쓰기 위해서는 Babel이라는 JavaScript 컴파일러가 필요

<!DOCTYPE html> <html lang="en"> <body> <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js" ></script> <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" ></script> <script crossorigin src="https://unpkg.com/@babel/standalone/babel.min.js" ></script> <div id="root"></div> <script type="text/babel"> const rootElement = document.getElementById("root"); const element = <h1 className="title">Hello, world!</h1>; ReactDOM.render(element, rootElement); </script> </body> </html> ``` ## 템플릿 ```html <!DOCTYPE html> <html lang="en"> <body> <div id="root"></div> <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js" ></script> <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" ></script> <script crossorigin src="https://unpkg.com/@babel/standalone/babel.min.js" ></script> <script type="text/babel"> const rootElement = document.getElementById("root"); const App = () => { return ( <> <button onclick={handleClick}>search</button> </> ); ReactDOM.render(<App />, rootElement); }; </script> </body> </html> ```