TIL 101 | Tagged Templates

hyounglee·2021년 1월 5일
0

JavaScript

목록 보기
42/46

Tagged Template Literals는 Template Literals를 이용하여 함수의 인자를 파싱하여 넘겨주는 것을 의미한다.

const lines = ["1", "2", "3"]

function buildHTML(strings, exprs) {
  const newHTML = exprs.map(function(expr){
    return `${strings[0]}${expr}${strings[1]}`
  });
  return newHTML;
}
const result = buildHTML`<li>${lines}</li>`;
console.log(result);
// ["<li>1</li>", "<li>2</li>", "<li>3</li>"]

문자열은 첫번째 파라미터의 배열로 들어가고, 나머지 변수 값은 각각 값이 대입된다. 변수는 여러개가 될 수도 있다.

const placeHTML = buildHTML`<li>${lines}</li>`;
placeHTML('#quotes');

function buildHTML (tags, lines) {
  return function (element) {
    const newHTML = lines.map(function(line){
      return `${tags[0]}${line}${tags[2]}`;
    });
    const finalHTML = newHTML.join('');
    document.querySelector(element).innerHTML += finalHTML;
  }
}

리액트 라이브러리인 styled-components 역시 Tagged Template를 사용한다.

function test() {
  return "World";
};

const templateLiteralCallback = `Hello ${() => test()}`
console.log(testCallback); // Hello () => test(); 그냥 스트링으로 출력

function taggedCallback(strings, func) {
  return strings[0] + func();
}

const taggedLiteralCallback = taggedCallback`Hello ${() => test()}`
console.log(taggedLiteralCallback); // Hello World
profile
(~˘▾˘)~♫❝ 쉽게만 살아가면 재미없어 빙고 .ᐟ ❞•*¨*•.¸¸♪

0개의 댓글