有没有办法使lit-html模板中的标签动态化?

时间:2019-12-10 02:36:21

标签: lit-element lit-html

问题几乎是不言而喻的。

示例:

function generateTemplate(tag) {
  return html`
    <${tag}
      .some-prop=${1}
    >
      ...
    </${tag}>
  `;
}

1 个答案:

答案 0 :(得分:3)

没有一种方法可以专门用来完成您在此处提到的内容,但是有两种方法可以使您更加接近:

  • 条件渲染

const template = tag => { 
  if (tag === 'custom-component') {
    return html`<custom-component></custom-component>`;
  } else if (tag === 'other-component') {
    return html`...`;
  } else {
    return html`<some-default></some-default>`;
  }
};

import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
const template = unsafeContent => {
  // bear in mind that this should only be done after sanitizing the content
  return html`${unsafeHTML(unsafeContent)}`;
};
template('<my-component>Some content</my-component>');