【问题标题】:Selecting Elements By Id in Purescript在 Purescript 中按 ID 选择元素
【发布时间】:2017-01-14 05:10:29
【问题描述】:

purescript-halogen 中是否有一个函数可以通过 id 选择一个元素,还是我需要自定义角色它(这对我来说似乎很奇怪)。

我正在阅读有关 Pursuit 的文档,我在 Util 中看到了一个 selectElement 函数,但我没有看到可以让我通过 id 选择的东西。

我可以使用getElementById :: ElementId -> NonElementParentNode -> Eff () (Nullable Element) 获得Element,但我不知道如何将这个Element 变成HTMLElement

Pursuit 中也缺少类型搜索功能,所以我为这个幼稚的问题道歉。

【问题讨论】:

  • 您不能安全地将Element 转换为HTMLElement。试试selectElement "#id"。但更好的方法是将Halogen.VDom.Driver.runUI 的签名中的HTMLElement 更改为Node,因为以后卤素不需要HTMLElement

标签: purescript halogen


【解决方案1】:

在使用使用虚拟 DOM 的库时,通常不应该这样做,因为如果您通过 id 保存对元素的引用,它最终可能会过时并引用完全不同的元素,或者不再附加到 DOM。

获取元素的方法是使用ref,有一个使用它的例子in this section of the guide。它的工作原理类似于事件处理程序,只要元素存在或被删除,就会在组件上引发查询。如果您使用更新组件状态中的引用的查询,您可以确保知道您始终拥有您想要的实际元素(或 Nothing,如果它由于某种原因不存在)。

如果你真的想使用getElementById,那么it is available from purescript-dom。它不是 Halogen 的一部分,因为 Halogen 不适用于通用 DOM 操作。提供这些实用功能只是为了更轻松地初始化 Halogen 应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2020-09-07
    • 2011-11-09
    • 2013-03-15
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多