[React] createElement, ReactDOM, JSX에 대해서

2023. 8. 17. 15:08·Frontend/React

createElement

React에서는 createElement 함수를 통해 React 요소를 생성할 수 있다.

하지만 실제로 createElement를 쓰는 경우는 많지 않기에, 이해만 하고 넘어가자.

 

createElement를 쓸 때

첫 번째 argument는 root에 들어갈 HTML 태그이며,

두 번째 argument는 props가 포함된 object,

세 번째 argument는 content이다.

 

※ chatGPT의 createElement에 대한 설명도 첨부한다.

React.createElement(type, [props], [...children])
  • type: React 요소의 타입을 나타냅니다. 예를 들어, HTML 요소라면 문자열로 "div", "span" 등을 사용하며, 사용자 정의 컴포넌트라면 컴포넌트의 함수나 클래스를 전달합니다.
  • props (선택 사항): React 요소에 전달할 속성을 나타냅니다. 일반적으로 HTML 속성처럼 이름과 값을 가진 객체로 전달됩니다. 예를 들어, {className: "my-class", onClick: handleClick}와 같이 속성을 전달할 수 있습니다.
  • children (선택 사항): React 요소의 내부에 들어갈 내용을 나타냅니다. 이 부분은 해당 요소의 자식 요소를 나타내는데, 문자열, 숫자, 다른 React 요소 등이 될 수 있습니다.

 

예시

const element = React.createElement(
  'div',
  { className: 'my-class', onClick: handleClick },
  'Hello, World!'
);

ReactDOM

ReactDom은 모든 React element들을 HTML body에 둘 수 있도록 해주는 library or package이다.

 

ReactDOM.render() -> render의 의미는 react element를 가지고 HTML로 만들어 배치한다는 것. 즉, 사용자에게 보여준다는 의미이다.

 

ReactDOM.render(span, span이 가야할 위치) -> 그래서 보통 body에 id=“root” 만들어서 span을 root 안에 둔다.

 

예시

import ReactDOM from 'react-dom';
const element = <h1>Hello, React!</h1>;
const container = document.getElementById('root'); // 실제 DOM 요소
ReactDOM.render(element, container);

JSX

JSX는 자바스크립트를 확장한 문법이다.

 

JSX 내에서 중괄호 {}를 사용하여 JavaScript 표현식을 포함할 수 있다. (스타일은 {} 2개이다.)

const name = 'Alice';
const greeting = <h1>Hello, {name}!</h1>;

 

 

주의할 점이 잇는데, JSX는 브라우저가 온전히 이해하지 못하므로

브라우저가 이해할 수 있게 https://unpkg.com/@babel/standalone/babel.min.js 를 설치해야한다.

그리고 바벨을 가져온 뒤 script type="text/babel"로 적어줘야 인식할 수 있다.

 

const Button = () => (
             <button 
                style={{
                    backgroundColor: "tomato",
                }} 
                onClick={() => console.log("im clicked")}>
                Click me
                </button>
        );
        const Container = () => 
        <div>
            <Title />
            <Button />
        </div>
        ReactDOM.render(<Container />, root);

 

div에 const를 넣기 위해서는 먼저 const를 함수로 만들어줘야 한다.

const Btn = () => ();

arrow function 이라고 부른다. = () => ( ); 는 function Btn() { return ( ); } 와 같음

 

HTML 태그처럼 만들어서 넣어줘야 되고 컴포넌트의 첫 글자는 반드시 대문자여야 한다.(우리가 직접 만든 요소는 전부 대문자로 시작해야 한다)

 


위 내용은 노마드코더의 'ReactJS로 영화 웹 서비스 만들기' 강의에서 알려준 내용 중 일부를 포함하고 있습니다.

React에 대해서 자세하고 친절하게 가르쳐주셔서 만족하면서 듣고 있습니다.

(밑에 링크로 들어가면 수강할 수 있습니다. 무료 강의 입니다.)

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

 

ReactJS로 영화 웹 서비스 만들기 – 노마드 코더 Nomad Coders

React for Beginners

nomadcoders.co

 

저작자표시 비영리 변경금지 (새창열림)

'Frontend > React' 카테고리의 다른 글

[React] useEffect()에 대해서  (1) 2023.08.17
[React] Props에 대해서  (0) 2023.08.17
[React] useState()에 대해서  (0) 2023.08.17
[React] npx create-react-app이 잘 실행되지 않는다면?(NPM 레지스트리 URL 에러)  (0) 2023.08.11
[React] React를 활용하여 시간/분 , 킬로미터/마일 변환기 만들기  (1) 2023.08.01
'Frontend/React' 카테고리의 다른 글
  • [React] Props에 대해서
  • [React] useState()에 대해서
  • [React] npx create-react-app이 잘 실행되지 않는다면?(NPM 레지스트리 URL 에러)
  • [React] React를 활용하여 시간/분 , 킬로미터/마일 변환기 만들기
퀵차분
퀵차분
웹 프론트엔드 개발자를 꿈꾸고 있습니다 :)
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Frontend (28)
        • HTML, CSS (7)
        • Javascript (3)
        • React (11)
        • Typescript (2)
        • Next.js (4)
      • Node.js (3)
      • Study (40)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (20)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (7)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리액트
    typescript
    시스템프로그래밍
    오블완
    자바스크립트
    음악추천
    알고리즘
    javascript
    HTML
    next.js
    react
    프롬프트 엔지니어링
    프로그래머스
    티스토리챌린지
    백준
    타입스크립트
    인공지능
    프로그래머스 자바스크립트
    프론트엔드
    KUIT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[React] createElement, ReactDOM, JSX에 대해서
상단으로

티스토리툴바