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" )
]
基于
首先,如果有人 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" )
]