본문 바로가기

CodeSoom- React 13기

[코드숨] 리액트 13기 -1강/웹 개발 (코드 줄이기 예제)

<!DOCTYPE html>
<html>
    <head>
        <meta charset ="UTF-8">
        <title>Demo</title>
    </head>
    <body>
        <div id="app"></div>
        <script src="main.js"></script>
    </body>
</html>

 

js

▼아래는 다양한 방식 예시

const element = document.getElementById('app');

element.innerHTML = '<p>hello, world!</p>';
const element = document.getElementById('app');

const paragraph = document.createElement('p'); //요소를 만든다
paragraph.innerText = 'Hello, world!';

element.appendChild(paragraph); //마지막 자식으로 넣기
const element = document.getElementById('app');

const paragraph = document.createElement('p');

const text = document.createTextNode('Hello, world!'); // 선택한 요소에 텍스트를 추가한다.
paragraph.appendChild(text); //<p></p>안에 텍스트로 넣어짐

element.appendChild(paragraph);

 


 

간단하게 줄이는 방법 예제

 

여러개 글씨의 태그를 만들 경우 / 복잡

함수로 공통된 것을 묶어준다.

 

아래 쪽 반복되던 것은 아래와 같이 정리

 

.

.

.

 

// 추상화한 함수
function createElement(tagName, ...children) {
  const element = document.createElement(tagName);
  children.forEach((child) => {
    element.appendChild(child);
  });

  return element;
}

const paragraph1 = createElement(
  'p', // 1번째는 tagName, 나머지는 뒤에 ...children배열로 들어감
  document.createTextNode('Hello'),
  document.createTextNode('Hello!!'),
);

const paragraph2 = createElement(
  'p',
  document.createTextNode('Hi'),
);

const root = createElement(
  'div',
  paragraph1,
  paragraph2,
);

const container = document.getElementById('app');

container.appendChild(root);

function createElement(tagName, ...children) {
  const element = document.createElement(tagName);
  children.forEach((child) => {
    element.appendChild(child);
  });

  return element;
}

document.getElementById('app').appendChild(
  createElement(
    'div',
    createElement(
      'p',
      document.createTextNode('Hello'),
      document.createTextNode('Hello!!'),
    ),
    createElement(
      'p',
      document.createTextNode('Hi'),
    ),
  ),
);

function createElement(tagName, ...children) {
  const element = document.createElement(tagName);
  children.forEach((child) => {
    element.appendChild(child);
  });

  return element;
}

document.getElementById('app').appendChild(
  createElement(
    'div',
    createElement(
      'p',
      ...[1, 2, 3].map((i) => (
        document.createTextNode(`Hello! ${i} | `)
      )),

    ),
    createElement(
      'p',
      document.createTextNode('Hi'),
    ),
  ),
);