问题标签 [halogen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
111 浏览

purescript - Purescript Halogen DeepPeek Child 而不是 Grandchild

我正在尝试修改此示例https://github.com/slamdata/purescript-halogen/blob/v0.12.0/examples/deep-peek/src/Main.purs#L58(相关部分复制如下),而是偷看孙子我只想偷看孩子,或者在这种情况下peekList。我还想将插槽类型保留为 peek 函数中的参数peekList

我怎样才能在peekList不丢失 slot 参数的情况下真正偷看?

我试过删除H.runChildF

然后在 slot 参数中添加回peekList

但是然后在peek我收到错误“尝试将 ChildF ListSlot 类型与 Coproduct 类型(ChildF ListSlot ListQuery)匹配时无法将类型 ChildF 与 Coproduct 类型匹配”

如果我只是尝试使用peekListo peek,我会收到错误“在尝试将类型 ChildF ListSlot (Coproduct ListQuery (ChildF TickSlot TickQuery)) 与类型 ChildF ListSlot ListQuery 匹配时,无法将类型 Coproduct ListQuery (ChildF TickSlot TickQuery) 与类型 ListQuery 匹配”

任何帮助将不胜感激,谢谢!

0 投票
2 回答
89 浏览

monad-transformers - 卤素组件查询中的 throwError

我正在努力实现以下目标:我输入的 API 请求的方式是它们返回所需的值,或者在状态代码未指示成功或身份验证令牌无效时返回错误等:Either String r

eval现在,当我查询我的组件时,我不想关心它。我只对快乐路径感兴趣(像无效登录尝试这样的预期错误被认为是快乐路径,只是想避免意外的东西),并且应该统一和全局处理错误(向总线发送一些通知)。

为此,我创建了变压器堆栈:

现在,要将它与 一起使用runUI,我需要提供要与它一起使用的自然转换hoist(除非我错过了其他可能性):

因为我们在~>这里使用,所以我们被迫保留返回类型,但是对于Left我手头没有它的情况!

如何解决这样的要求?重申一下 - 我只想在执行的操作遇到错误时“取消”我的组件查询的评估,但我想默默地做它并从顶部处理它。

0 投票
0 回答
35 浏览

virtual-dom - 使用卤素处理 3rd 方 DOM 修改

我正在使用带有卤素的MDL lite 。MDL 主要依赖 CSS,但它为各种功能添加了一些 JS。

当与 VDom 方法一起使用时,这会产生不幸的后果。例如,修改输入后的textfield应用is-dirty类 - 除其他外,这会使标签文本不可见(默认情况下,它与输入字段中的占位符类似地显示)。

我的渲染代码没有意识到这一点,当它重新渲染时,这个类被删除,导致标签显示在输入值的顶部。

我对此的直接解决方案是我可以在我的组件中重新创建一些逻辑,根据需要添加这个类。还有其他方法吗?我们能以某种方式告诉 VDom 渲染器不要触摸某些元素吗?

0 投票
1 回答
234 浏览

lifecycle - 使用完纯脚本卤素组件后,“销毁”它的最佳方法是什么?

我正在使用卤素来控制我的应用程序的菜单系统,我想知道如何“销毁”卤素组件。现在,我有一个函数可以在具有特定 ID 的 div 上创建子菜单组件。在应用程序的整个生命周期中,子菜单可能会被多次访问,因此目前每当visitSubMenu调用该函数时都会创建组件的多个实例。

理想情况下,我希望在用户完成子菜单中的工作后删除子菜单组件(即删除注入#submenu 的HTML,进行其他清理)。这样的事情可能吗?我意识到我可以在应用程序启动时只设置一次组件,并在应用程序的整个生命周期中保持它的活动状态,但如果我只在需要时设置它似乎更好。


我怀疑这是正确的做法,但我最初的想法是我可以创建一个生命周期组件,当我想销毁它时,我可以发送一个Finalize查询,然后手动从 DOM 中删除父元素。

0 投票
1 回答
171 浏览

purescript - 当 html 元素不存在时,不要运行卤素组件

我对纯脚本和卤素完全陌生。当一个 html 元素存在时,我试图显示一个卤素组件(myButton),否则什么也不做。

我不知道在Nothing子句中放入什么代码,以便我的代码类型检查并且在这种情况下什么也不做。

0 投票
1 回答
942 浏览

purescript - 卤素键盘输入示例和取消订阅事件?

如何在键盘输入示例中取消订阅除 HandleKey 之外的其他操作的键盘事件 ?(问题与 Halogen 2.0.1 版和 purescript 0.11.4 版有关。)

在示例中,输入/返回有效。我有一组元素可以通过按下关闭按钮用鼠标折叠,关闭操作会处理它。此外,输入/返回可用于折叠元素,它可以正常工作。

问题是当我用鼠标关闭(折叠)元素时,事件侦听器没有被删除(没有完成)并且它仍然存在。当我重新打开元素时,上面的代码将建立第二个(第三个、第四个等)侦听器,然后每次按键都会被处理多次。

我正在考虑创建一个键盘事件,但在这里听起来不正确。

所以问题是:

  • 如何检查是否已经有键盘监听器?
  • 然后如何在 Close 动作中停止它?
  • 或者是否可以制作 Done SubscribeStatus 并将其发送到 Close -action 的键盘侦听器?

进一步的问题:

  • 例子有在unsubscribe状态。如何使用它?
  • (我试图在 Init 动作和 Close 动作中放入一些东西,但这纯粹是猜测。)

后期编辑:这似乎与有关动态附加事件侦听器的问题有关,另请参见thisthisthis

其中一个答案说,只有通过使用状态才能了解动态处理程序,这对我的问题起到了作用。无论如何,我认为这里所说的问题仍然存在(如何使用卤素删除处理程序,特别是关于示例中的取消订阅字段 - 它是否有用?)

0 投票
1 回答
261 浏览

dom - 在 purescript-dom 中,您如何从 Node 转到特定的元素类型?

我想我可能缺少purescript-dom模块中的一个关键函数来从节点转换为特定的元素类型。例如,如果我有一个Event,我可以使用 DOM.Events.Events.target 来获取节点,但似乎获取特定元素的唯一方法是使用unsafeCoerce,例如

有没有更好的方法从节点到元素类型?

0 投票
2 回答
342 浏览

purescript - PureScript Halogen 中的滚动操作

我正在使用 purescript-halogen,当子组件的消息被捕获时,我想滚动到 div 的底部。但是,Halogen 中似乎没有滚动动作控制。那么,如何 滚动到 div 的底部?

我认为一种解决方案是在事件捕获时从 Main 调用其他进程,而不是 Halogen 进程。我不确定这个解决方案是否不错。

0 投票
1 回答
284 浏览

purescript - 如何创建无状态的静态卤素组件?

考虑来自 github 的这个片段,https://github.com/slamdata/purescript-halogen/blob/master/examples/basic/src/Button.purs#L42,它尝试使用卤素库呈现一个 html 按钮。

是否有任何可能的方法来获得最“准系统”的 UI 控件,只是渲染一个静态 UI 组件,而不涉及状态?

0 投票
0 回答
171 浏览

purescript - 有没有办法将来自 URL 的片段标识符(散列片段)与纯脚本路由相匹配?

是否可以匹配结尾有哈希片段的 url 路由,例如example.com/examplePath#field1=value&field2=anotherValue使用purescript-routing库?这是为了能够Map String String从哈希片段中的名称-值对中获取值。

(我应该使用不同的库(如purescript-uri)以便从 URL 路由中获取哈希片段值吗?)

我知道purescript-routing模块中的params函数可以对查询参数进行操作以执行与此类似的操作 - 但在这种情况下,我试图从用户将在 Google 之后重定向到的 URL 中获取值OAuth 登录。对于客户端 Web 应用程序,访问令牌作为URI 的哈希 (#) 片段中的一对而不是查询字符串返回。Routing.Match.Classname=value

问题是我为在我的函数中具有哈希片段的 URL 创建的案例routing :: Match Routes似乎不匹配,并且最后我的 catch all 案例中的路由匹配。

因此,对于类似example.com/auth/#field=value 情况的路线将是:

但如果 URL 末尾有 #,则无法匹配 URL。