jinux127
Jinux
jinux127
  • 분류 전체보기 (109)
    • 엘리스 SW 엔지니어 트랙 (6)
      • TIL (6)
    • 개발지식 (22)
      • React (4)
      • JavaScript (9)
      • Web (4)
      • Node.js (1)
      • TypeScript (4)
    • 알고리즘 (69)
      • 백준 (47)
      • 프로그래머스 (14)
      • 이것이 코딩테스트다 (6)
    • 프로젝트 (10)
      • PHOTOCALENDAR (3)
      • 빙수먹을래? (7)
    • Life (0)
      • 헬스 (0)
      • 독서 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 이전

인기 글

태그

  • 문법
  • 구현
  • node.js
  • 알고리즘
  • CSS
  • 그리디

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jinux127

Jinux

프로젝트/빙수먹을래?

빙액트 (1)

2022. 6. 10. 00:18

우리 빙먹 프로젝트에 사용할 리액트의 이름은 빙액트다.

빙액트를 구현하는 과정이 쉽지만은 않을 것이다. 하지만 쫄지말자. 쉽지않다는 것은 얻어 갈 것도 많다는 것!!! 아 설레네~~

 

 

먼저 리액트를 구현하기 전에 기본 개념을 알아야 한다. 먼저 JSX로 정의된 엘리먼트가 어떻게 JS로 변환되는지,이를 어떻게 React는 createElement 하는지에 대해 알아야 한다.

기본 개념

const element = <h1 title="foo">Hello</h1>

// JSX -> JS
const element = React.createElement(
  "h1",
  { title: "foo" },
  "Hello"
)
​

JSX는 바벨과 같은 빌드 툴에 의해 JS 코드로 변한해준다. 변환받은 JS 코드에서 React.createElement는 인자 값들로 객체를 생성하고 유효성 검사를 한다.

 

React.createElement 로 생성된 객체는 아래와 같다.

const element = {
  type: "h1",
  props: {
    title: "foo",
    children: "Hello",
  },
}

보면 알겠지만 type은 DOM 노드의 타입을 지정하는 문자열, tagName이다. 또 props에 여러 속성들을 객체형태로 가지고  이 중 children은 자식 노드들을 저장할 객체라고 보면 된다. 지금은 문자열이지만 일반적으론 배열의 형태이다.

 

const container = document.getElementById("root")
ReactDOM.render(element, container)

이제 render를 구체해보자

const node = document.createElement(element.type)
node["title"] = element.props.title

const text = document.createTextNode("")
text["nodeValue"] = element.props.children

node.appendChild(text)
container.appendChild(node)

1. DOM 노드이 타입에 맞게 노드 생성

2. props를 해당 노드에 설정해준다. 

3. children의 값인 Hello의 문자열을 넣어주기 위해 TextNode생성

4. 이 텍스트 노드에 nodeValue 속성에 해당 문자열 "Hello"를 설정해준다. 

5. 노드에 자식요소에 넣고 이를 컨테이너에 넣는다.

 

이렇게 리액트가 구현되는 간단한 로직이다.

 

 

 

'프로젝트 > 빙수먹을래?' 카테고리의 다른 글

빙액트 (5)  (0) 2022.06.26
빙액트(4)  (0) 2022.06.15
빙액트(3)  (0) 2022.06.14
빙액트 (2)  (0) 2022.06.10
세번째 프로젝트 시작  (0) 2022.06.09
jinux127
jinux127

티스토리툴바