我正在尝试purescript-halogen与websockets结合使用,但经过多次尝试后,我无法让它们一起工作.
我已经在Thermite和websockets上看到了这个问题以及Phil关于这个Driver功能的答案.卤素也有一个Driver功能,但我需要运行Driver具有Aff效果的功能,同时purescript-websockets-simple使用Eff效果.
我不知道如何将websocket包的同步回调转换为在Affmonad中运行的异步代码.我需要使用AVar吗?我需要purescript-coroutines-aff吗?如果是这样,我如何将这些部件连接在一起?
提前感谢任何正确方向的指针!
我想用Purescript的Halogen编写我的前端的特定组件.
例如,我想使用Halogen创建一个注册表.它看起来如下所示:
module RegistrationForm where
import Prelude
...
-- | The state of the application
newtype State = State { email :: String, password :: String }
derive instance genericState :: Generic State
instance showState :: Show State where show = gShow
instance eqState :: Eq State where eq = gEq
initialState :: State
initialState = State { email: "", password: "" }
-- | Inputs to the state machine
data Input a = FormSubmit a
| UpdateEmail String a …Run Code Online (Sandbox Code Playgroud) 我正在使用 purescript-halogen,并且我想在捕获子组件的消息时滚动到 div 底部。然而,卤素中似乎不存在滚动动作控制。那么,如何 滚动到 div 底部呢?
我认为的一种解决方案是,当事件捕获时,从 Main 调用其他进程,而不是 Halogen。我不确定这个解决方案还不错。
在我自定义的Halogen/Purescript项目中,我遵循AJAX示例中的模式,在这里我将我的行为分解为纯粹Input的和有效Request的.
我想更改我的事件处理程序以使用该preventDefault行为,但不明白这会对UI函数的类型产生什么影响.
我通过以下方式更改事件处理程序,对AJAX示例进行了相同的更改:
之前:
H.button [ A.classes [B.btn, B.btnPrimary]
, A.disabled busy
, A.onclick (\_ -> pure (handler code))
] [ H.text "Compile" ]
Run Code Online (Sandbox Code Playgroud)
后:
H.a [ A.classes [B.btn, B.btnPrimary]
, A.href "#compile"
, A.disabled busy
, A.onclick (\_ -> E.preventDefault $> pure (handler code))
] [ H.text "Compile" ]
Run Code Online (Sandbox Code Playgroud)
(完全差异在这里可用)
我最终得到这种类型的错误:
Cannot unify type
Example.Ajax.Input
with type
Halogen.HTML.Events.Monad.Event Halogen.HalogenEffects<(http ::
Example.Ajax.HTTP | u32519)> Example.Ajax.Input
Run Code Online (Sandbox Code Playgroud)
此时,我有点迷失是否需要调整UI函数的类型签名或者我preventDefault以错误的方式应用修饰符.
我正在使用 purescript-halogen 来构建一个类似电子表格的表格(类似于Handsontable)。如果您双击一个单元格,一个 html 输入元素将呈现为相应表格单元格的子元素(并且不会为所有其他单元格呈现此类元素)。
这对卤素非常有效,只是我不知道如何自动将焦点设置到新创建的输入元素。
我尝试了该autofocus属性,但这仅适用于双击的第一个单元格。JavaScript 的focus()方法是在新元素上调用该方法,但是我不知道在卤素中更新 DOM 后如何调用它。有任何想法吗?
是否有一个函数purescript-halogen可以通过它来选择一个元素id,或者我是否需要自定义它的角色(这对我来说似乎很奇怪)。
我读通过追求上的文档,我看到一个selectElement在功能上Util,但没有在任何地方我看到的东西,让我的选择id。
我可以使用getElementById :: ElementId -> NonElementParentNode -> Eff () (Nullable Element)来获取Element,但我不知道如何将其Element变成HTMLElement.
Pursuit 中的类型搜索功能也缺乏,所以我为这个幼稚的问题道歉。