问题标签 [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.
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 类型匹配”
如果我只是尝试使用peekList
o peek
,我会收到错误“在尝试将类型 ChildF ListSlot (Coproduct ListQuery (ChildF TickSlot TickQuery)) 与类型 ChildF ListSlot ListQuery 匹配时,无法将类型 Coproduct ListQuery (ChildF TickSlot TickQuery) 与类型 ListQuery 匹配”
任何帮助将不胜感激,谢谢!
monad-transformers - 卤素组件查询中的 throwError
我正在努力实现以下目标:我输入的 API 请求的方式是它们返回所需的值,或者在状态代码未指示成功或身份验证令牌无效时返回错误等:Either String r
。
eval
现在,当我查询我的组件时,我不想关心它。我只对快乐路径感兴趣(像无效登录尝试这样的预期错误被认为是快乐路径,只是想避免意外的东西),并且应该统一和全局处理错误(向总线发送一些通知)。
为此,我创建了变压器堆栈:
现在,要将它与 一起使用runUI
,我需要提供要与它一起使用的自然转换hoist
(除非我错过了其他可能性):
因为我们在~>
这里使用,所以我们被迫保留返回类型,但是对于Left
我手头没有它的情况!
如何解决这样的要求?重申一下 - 我只想在执行的操作遇到错误时“取消”我的组件查询的评估,但我想默默地做它并从顶部处理它。
virtual-dom - 使用卤素处理 3rd 方 DOM 修改
我正在使用带有卤素的MDL lite 。MDL 主要依赖 CSS,但它为各种功能添加了一些 JS。
当与 VDom 方法一起使用时,这会产生不幸的后果。例如,修改输入后的textfield
应用is-dirty
类 - 除其他外,这会使标签文本不可见(默认情况下,它与输入字段中的占位符类似地显示)。
我的渲染代码没有意识到这一点,当它重新渲染时,这个类被删除,导致标签显示在输入值的顶部。
我对此的直接解决方案是我可以在我的组件中重新创建一些逻辑,根据需要添加这个类。还有其他方法吗?我们能以某种方式告诉 VDom 渲染器不要触摸某些元素吗?
lifecycle - 使用完纯脚本卤素组件后,“销毁”它的最佳方法是什么?
我正在使用卤素来控制我的应用程序的菜单系统,我想知道如何“销毁”卤素组件。现在,我有一个函数可以在具有特定 ID 的 div 上创建子菜单组件。在应用程序的整个生命周期中,子菜单可能会被多次访问,因此目前每当visitSubMenu
调用该函数时都会创建组件的多个实例。
理想情况下,我希望在用户完成子菜单中的工作后删除子菜单组件(即删除注入#submenu 的HTML,进行其他清理)。这样的事情可能吗?我意识到我可以在应用程序启动时只设置一次组件,并在应用程序的整个生命周期中保持它的活动状态,但如果我只在需要时设置它似乎更好。
我怀疑这是正确的做法,但我最初的想法是我可以创建一个生命周期组件,当我想销毁它时,我可以发送一个Finalize
查询,然后手动从 DOM 中删除父元素。
purescript - 当 html 元素不存在时,不要运行卤素组件
我对纯脚本和卤素完全陌生。当一个 html 元素存在时,我试图显示一个卤素组件(myButton),否则什么也不做。
我不知道在Nothing子句中放入什么代码,以便我的代码类型检查并且在这种情况下什么也不做。
purescript - 卤素键盘输入示例和取消订阅事件?
如何在键盘输入示例中取消订阅除 HandleKey 之外的其他操作的键盘事件 ?(问题与 Halogen 2.0.1 版和 purescript 0.11.4 版有关。)
在示例中,输入/返回有效。我有一组元素可以通过按下关闭按钮用鼠标折叠,关闭操作会处理它。此外,输入/返回可用于折叠元素,它可以正常工作。
问题是当我用鼠标关闭(折叠)元素时,事件侦听器没有被删除(没有完成)并且它仍然存在。当我重新打开元素时,上面的代码将建立第二个(第三个、第四个等)侦听器,然后每次按键都会被处理多次。
我正在考虑创建一个键盘事件,但在这里听起来不正确。
所以问题是:
- 如何检查是否已经有键盘监听器?
- 然后如何在 Close 动作中停止它?
- 或者是否可以制作 Done SubscribeStatus 并将其发送到 Close -action 的键盘侦听器?
进一步的问题:
- 例子有在
unsubscribe
状态。如何使用它? - (我试图在 Init 动作和 Close 动作中放入一些东西,但这纯粹是猜测。)
后期编辑:这似乎与有关动态附加事件侦听器的问题有关,另请参见this、this和this。
其中一个答案说,只有通过使用状态才能了解动态处理程序,这对我的问题起到了作用。无论如何,我认为这里所说的问题仍然存在(如何使用卤素删除处理程序,特别是关于示例中的取消订阅字段 - 它是否有用?)
dom - 在 purescript-dom 中,您如何从 Node 转到特定的元素类型?
我想我可能缺少purescript-dom
模块中的一个关键函数来从节点转换为特定的元素类型。例如,如果我有一个Event
,我可以使用 DOM.Events.Events.target 来获取节点,但似乎获取特定元素的唯一方法是使用unsafeCoerce
,例如
有没有更好的方法从节点到元素类型?
purescript - PureScript Halogen 中的滚动操作
我正在使用 purescript-halogen,当子组件的消息被捕获时,我想滚动到 div 的底部。但是,Halogen 中似乎没有滚动动作控制。那么,如何 滚动到 div 的底部?
我认为一种解决方案是在事件捕获时从 Main 调用其他进程,而不是 Halogen 进程。我不确定这个解决方案是否不错。
purescript - 如何创建无状态的静态卤素组件?
考虑来自 github 的这个片段,https://github.com/slamdata/purescript-halogen/blob/master/examples/basic/src/Button.purs#L42,它尝试使用卤素库呈现一个 html 按钮。
是否有任何可能的方法来获得最“准系统”的 UI 控件,只是渲染一个静态 UI 组件,而不涉及状态?
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.Class
name=value
问题是我为在我的函数中具有哈希片段的 URL 创建的案例routing :: Match Routes
似乎不匹配,并且最后我的 catch all 案例中的路由匹配。
因此,对于类似example.com/auth/#field=value
情况的路线将是:
但如果 URL 末尾有 #,则无法匹配 URL。