我无法解决SubControlB
函数的行为。我正在尝试构建一个登录页面,该页面在页面加载时进入MainControl
阶段。这是我的init
函数:
CheckingAuth
这是我的init
模块中的代码段:
init : (Model, Cmd Msg)
init = (LoginModel Login.CheckingAuth, Cmd.map (\_ -> LoginMsg Login.CheckAuth) Cmd.none)
我已经做了很多尝试,但是无法在应用程序启动时传递Login.Page
消息。
编辑:我终于可以使用以下代码段进行操作,但是我不知道为什么type Model = CheckingAuth | Display String | Redirecting String
type Msg = CheckAuth | AuthResult (Result Http.Error (Either String (Entity User))) | RedirectTo String
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case (Debug.log "MSG DELIVERED" msg) of
CheckAuth -> (CheckingAuth, Debug.log "making API request" <| Http.send AuthResult Api.login)
-- other cases come here
构造的CheckAuth
可以工作,而{ {1}}不:
Cmd Msg
答案 0 :(得分:1)
问题在于您的init不执行任何操作。如果您在{
// // Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/src"
}
]
}
上映射任何内容,那么您仍然会有Cmd.none
。
您真正想要发送的命令在您的更新函数中,因此只需直接将其升级到init中就可以了:
Cmd.none
您的第二个代码示例确实包含一个命令,因此可以立即返回并传递给update函数,但是如您所见,这不是达到目标的最简单方法。