如何在 Threepenny GUI 中重新创建一个元素?

How to recreate an element in Threepenny GUI?

如果我在某些 Element 上使用 delete 函数,我该如何重新创建它们(如让它们再次出现)?

我查看了示例和文档,但找不到任何允许我执行此操作的函数,也许 mkElement 需要我将其传递给 String。但是,由于我正在与 Element 合作,所以要获得 String 会创建它会有点困难。

那有什么办法吗?

鉴于 delete 具有签名 delete :: Element -> UI (),因此当您调用 delete 时,您手头有一个 Element。你为什么不能在某个地方抓住这个 Element 呢? (我的意思是通过多种方式维护对它的引用。)然后只需使用 (#+) :: UI Element -> [UI Element] -> UI Element 将其作为子元素附加到另一个元素。如果您只是想让它重新出现在它之前所在的位置,您只需将它作为子元素附加到开始时作为其父元素的元素。这是您的想法,还是我误解了问题?

(这里是图书馆作者)

实际上,delete 函数所做的不仅仅是从 DOM 树中删除元素——它试图删除在 JS 和 Haskell 端对它的任何引用。本质上,该元素在 delete.

之后(应该)无法使用

如果你想暂时隐藏一个元素,你可以

  • 通过CSSdisplay属性隐藏它。
  • 休息父元素的子元素,例如通过 element parent # set children [].