在Application.Helper.View我想創建一個 HTML 組件,如:
button :: action -> Text -> Html
button action label = [hsx|<a href={urlTo action}>{label}</a>|]
我可以在各種視圖中使用,例如: {button NewSessionAction "Login"}
但是,動作的正確型別簽名是什么?檢查urlTo(https://ihp.digitallyducing.com/api-docs/src/IHP.RouterSupport.html#urlTo)的來源表明action符合HasPath但我仍然不確定我應該如何撰寫我的函式。
我是 Haskell 的新手,因此任何指導以及“為什么”都會有很大幫助。
uj5u.com熱心網友回復:
(@pedrofurla 和 @MarcScholten 的回答)
- 匯入 IHP.RouterPrelude:
import qualified IHP.RouterPrelude as Router
- 將 HTML 組件函式更改為如下所示:
button :: (?context :: context, ConfigProvider context, Router.HasPath action) => action -> Text -> Html
button action label = [hsx|<a href={Router.urlTo action}>{label}</a>|]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/406352.html
標籤:
上一篇:專案特定位置的Haskell堆疊
