【问题标题】:lit-html : is there a way to force re-render of a template?lit-html:有没有办法强制重新渲染模板?
【发布时间】:2021-08-12 02:54:44
【问题描述】:

我一直在我自己的自定义 Web 组件库中使用 as lit-html。 我有第三方网络组件:

html`<lottie-player src=${state.url}  background="transparent"  speed="1"  style="width: 100%; height: 100%;"  loop  autoplay></lottie-player>`

每当src 属性发生更改时,此第三方组件都不会自行更新。我明白,他们没有这样设计。

有没有办法强制 lit-html 重新渲染它,就像我更改 state.url 时一样,而不是删除旧节点并创建新节点,lit-html 保持同一个节点完整并仅更改其属性.

是否有办法每次都强制重新渲染此特定模板?

【问题讨论】:

  • 您是否将lit-htmlLitElement 一起使用?如果是这样,您可以使用this.requestUpdate()
  • @pietrorea 不,我没有使用 LitElement。我正在使用基于lit-html 的自定义库。

标签: lit-html


【解决方案1】:

好的,所以我通过以下方式解决了这个问题:

let b = `<lottie-player src=${state.url}  background="transparent"  speed="1"  style="width: 100%; height: 100%;"  loop  autoplay></lottie-player>`;
t = html`${unsafeHTML(b)}`;

概念:B 是一个使用纯模板字符串的字符串。然后再用unsafeHTML指令创建一个重新渲染吧!

如果有人有更好的解决方案,也很乐意阅读。

【讨论】:

    猜你喜欢
    • 2020-07-31
    • 2016-08-01
    • 2023-03-29
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2014-05-26
    • 2018-07-30
    • 1970-01-01
    相关资源
    最近更新 更多