什么时候传递了init函数的“ Cmd Msg”?

时间:2018-06-23 04:34:10

标签: elm

我无法解决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

1 个答案:

答案 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函数,但是如您所见,这不是达到目标的最简单方法。