Чтобы уточнить, что я объяснял в моем вопросе:
Пользовательский запрос в пакете Elm HTTP 2.0.0 выглядит следующим образом:
request :
{ method : String
, headers : List Header
, url = String
, body = Body
, expect = Expect msg
, timeout = Maybe Float
, withCredentials = Maybe String
}
-> Cmd msg
Когда в Http 1.0.0 он выглядел как это:
request :
{ method : String
, headers : List Header
, url : String
, body : Body
, expect : Expect a
, timeout : Maybe Float
, withCredentials : Bool
}
-> Request a
Разница в том, что при использовании пользовательского запроса из HTTP 2.0.0 мне необходимо для передачи Msg
для использования этого запроса.
Теперь моя проблема была: я использовал файл Api.elm
. Каждый раз, когда мне нужно было выдать HTTP-запрос, я вызывал Api.request arg1 arg2...
, скажем, Login.elm
.
Поскольку функция request
в Api.elm
требовала типа Msg
, для, в в этом случае запрос на вход в систему, я подумал, что мне нужно будет определить Msg
из GotLogin
в Api.elm
и затем обработать, как GotLogin
будет обновлять Login.elm
, написав ветку update
для GotLogin
в Api.elm
.
Однако я мог бы просто определить GotLogin
Msg
в Login.elm
и передать его в Api.request
. Поскольку я определил GotLogin
в Login.elm
, я бы поставил ветвь GotLogin
в функции обновления Login.elm
вместо Api.elm
.
Это также относится к любому другому типу запроса. с любой другой страницы (Signup.elm
, Home.elm
, ...), что означает, что Api.elm
не должно иметь своей собственной функции update
, которая обновляет другие страницы.
Весь смысл Login.elm
, имеющего собственную функцию update
, состоит в том, что на него должны влиять только ветви его собственной функции update
, а не ветви Api.elm
.
.