TIL 101 | Tagged Templates

meow·2021년 1월 5일
1

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개의 댓글