我正在使用purescript-halogen
. 该组件应该显示一个只有一个输入按钮的空白 div,供用户选择一个本地文件,然后该文件将充当视频元素的源 URL。
我用纯 javascript 完成了一个工作模型,并希望将其移植到 purescript/halogen。我得到了要编译的 purescript 版本,但 Web 控制台给了我一条错误消息Uncaught TypeError: component.initialState is not a function
并指向这个 MDN参考。
这表明我如何定义我的 initialState 函数存在问题,但它是相当标准的:
component :: forall q i o m. MonadAff m => H.Component q i o m
component =
H.mkComponent
{ initialState
, render
, eval: H.mkEval $ H.defaultEval { handleAction = handleAction }
}
type State =
{ videoUrl :: Maybe String }
initialState :: forall i. i -> State
initialState _ =
{ videoUrl : Nothing
}
是否有可能在其生命周期中的错误时间调用该函数,从而使其未定义?
该组件的代码托管在这个 Github gist上。我一直在关注这个 Github问题作为参考。
我的package.json
:
"private": true,
"devDependencies": {
"parcel": "1.12.3",
"purescript": "^0.14.0",
"spago": "^0.19.1"
},
"scripts": {
"build": "spago build",
"test": "spago test",
"serve": "parcel dev/index.html --open",
"build-prod": "mkdir -p prod && cp dev/index.html prod/ && rm -rf dist && spago bundle-app --to prod/index.js && parcel build prod/index.html"
},
"dependencies": {
"node": "^15.12.0"
}
}
我使用purescript v0.14.0
,编译并spago v0.20.0
在.node v16.3.0
Firefox v89.0
Ubuntu 20.04.2 LTS