Data flow
Top-down: props and environment
Classic props
The Env pattern
Env pattern// Page declares its dependencies
let ProductDetailsView (env: #Env.IFullContext & #Env.IFillTranslations & #Env.IShowToast) sku =
...
// A simpler page needs less
let AboutView (env: #Env.IFullContext) =
...module Env =
type [<Interface>] IFullContext = abstract member FullContext: FullContext
type [<Interface>] IFillTranslations = abstract member FillTranslations: Translations -> unit
type [<Interface>] ILoginUser = abstract member LoginUser: User -> unit
type [<Interface>] IShowToast = abstract member ShowToast: Toast -> unitBottom-up: callbacks vs. Intent pattern
Single Elmish program (SAFE): Intent pattern
Separated Elmish models (SAFEr): callbacks
Concrete data flows
Translations
Toast notifications
Drawer
Product Sold-out
Summary
Last updated