ELM 获取查询参数作为字符串

ELM get query parameter as string

基于 并感谢@glennsl 我得到了一些地方。

首先,如果有人 link 我可以了解解析,我将非常高兴。

page : Url.Url -> String
page url = 
  case (Parser.parse (Parser.query (Query.string "name")) url) of
    Nothing -> "My query string: " ++ (Maybe.withDefault "empty" url.query)
    Just v -> case v of
      Just v2 -> "Finnaly a name"
      Nothing -> "????"

据我所知,表达式 Parser.parse (Parser.query (Query.string "name")) url 是 returning a Maybe (Maybe String) 我认为这是解析器可以 return 的东西,如果这样做可能是一个字符串,对吗?

在我看来,如果我的 url 中有参数 name,那么我的第一个 Just 将被执行,然后我可以获得名称。

但是不管我在我的 url 上放了什么,它总是第一个 Nothing

我得到的结果

问题是您没有解析 URL 的路径部分,这正是 Url.Parser 的主要目的。您必须完全匹配路径。

这是一个与您的 URL 匹配的解析器:

s "src" </> s "Main.elm" <?> (Query.string "name")

另请注意,解析查询字符串是可选的,这意味着这也将匹配您的 URL:

s "src" </> s "Main.elm"

但只要包含查询参数解析器,它也必须匹配。

如果您只关心查询参数,则必须专门解析查询字符串,方法是编写您自己的函数来执行此操作,或者使用像 qs 这样的库,例如:

QS.parse
    QS.config
    "?a=1&b=x"

== Dict.fromList
    [ ( "a", One <| Number 1 )
    , ( "b", One <| Str "x" ) 
    ]