微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

render() - 函数没有更新 DOM - lit-html

如何解决render() - 函数没有更新 DOM - lit-html

我对 lit-html 渲染功能有疑问。 目前我遇到的问题是有时渲染函数不更新 DOM。

我的渲染函数如下所示:

public renderLootbag = (_characterItems: Object): void => {
  //some other code
  const lootbagInventoryTemplate: TemplateResult[] = [];

  for (let i: number = 0; i < numberOfInventorySpaces; i++) {
    lootbagInventoryTemplate.push(html` 
      <section class="lootbag__inventoryItem">
      //some other code 
      </section>
    `)
  };

  const lootbagTemplate: TemplateResult = html`
    //some other code
    <section class="lootbag__inventory">${lootbagInventoryTemplate} 
    </section>
  `;

  console.log(lootbagInventoryTemplate);
  render(lootbagTemplate,getLootbagContainer);
}

每次我点击一个名为“打开 Lootbag”的按钮时都会触发这个函数

现在的问题是:如果 renderLootbag() 函数中的参数值发生变化,DOM 不会更新,即使 console.log(lootbagInventoryTemplate) 向我显示了新值... :/.

img of the console.log

img of the dom

注意:在这种情况下,类“lootbag__itemData”的元素不应填充内容

有没有办法完全强制进行新的渲染?,我已经尝试用 innerHTML 清空我的容器,然后调用渲染函数,但是没有用。

提前致谢

解决方法

我有一个类似的问题,输入没有一直更新。 潜在的问题是我将所有来自用户的输入转换为数字,如果用户输入一些字母,它会回落到零。 由于值并不总是改变(零变为零),点亮的 html 不会重新渲染。

解决方案使用了指令。

import { html,render,directive } from "lit-html";

const value = store.savedValueFromInput;

const forceWrite = directive((someValue) => (part) => {
        part.setValue(someValue);
    });

<input type="number" @change="${setValueFromInput}" .value="${forceWrite(value)}" />

这应该会强制重新渲染。

最好的问候, 特里斯坦

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?