@@ -2,55 +2,30 @@ use seed::{prelude::*, *};
22use web_sys;
33
44// ------ ------
5- // Model
5+ // Before Mount
66// ------ ------
77
8- #[ derive( Default ) ]
9- struct Model {
10- clicks : u32 ,
8+ fn before_mount ( _: Url ) -> BeforeMount {
9+ BeforeMount :: new ( )
10+ . mount_point ( "main" )
11+ . mount_type ( MountType :: Takeover )
1112}
1213
1314// ------ ------
14- // Update
15+ // Model
1516// ------ ------
1617
17- #[ derive( Clone ) ]
18- enum Msg {
19- Clicked ,
20- UrlChanged ( Url ) ,
21- KeyPressed ( web_sys:: KeyboardEvent ) ,
22- SayHello ,
23- }
24-
25- fn update ( msg : Msg , model : & mut Model , orders : & mut impl Orders < Msg , GMsg > ) {
26- match msg {
27- Msg :: Clicked => model. clicks += 1 ,
28- Msg :: UrlChanged ( url) => {
29- log ! ( url) ;
30- orders. skip ( ) ;
31- }
32- Msg :: KeyPressed ( event) => {
33- log ! ( event. key( ) ) ;
34- orders. skip ( ) ;
35- }
36- Msg :: SayHello => {
37- orders. send_g_msg ( GMsg :: SayHello ) ;
38- }
39- }
18+ struct Model {
19+ clicks : u32 ,
4020}
4121
4222// ------ ------
43- // View
23+ // After Mount
4424// ------ ------
4525
46- fn view ( model : & Model ) -> impl View < Msg > {
47- vec ! [
48- button![
49- format!( "Clicked: {}" , model. clicks) ,
50- simple_ev( Ev :: Click , Msg :: Clicked ) ,
51- ] ,
52- button![ "Say hello" , simple_ev( Ev :: Click , Msg :: SayHello ) , ] ,
53- ]
26+ fn after_mount ( _: Url , _: & mut impl Orders < Msg , GMsg > ) -> AfterMount < Model > {
27+ let model = Model { clicks : 0 } ;
28+ AfterMount :: new ( model) . url_handling ( UrlHandling :: None )
5429}
5530
5631// ------ ------
@@ -65,7 +40,7 @@ fn routes(url: Url) -> Option<Msg> {
6540// Window Events
6641// ------ ------
6742
68- fn window_events ( _model : & Model ) -> Vec < Listener < Msg > > {
43+ fn window_events ( _ : & Model ) -> Vec < Listener < Msg > > {
6944 vec ! [ keyboard_ev( Ev :: KeyDown , Msg :: KeyPressed ) ]
7045}
7146
@@ -78,28 +53,53 @@ enum GMsg {
7853 SayHello ,
7954}
8055
81- fn sink ( g_msg : GMsg , _model : & mut Model , _orders : & mut impl Orders < Msg , GMsg > ) {
56+ fn sink ( g_msg : GMsg , _ : & mut Model , _ : & mut impl Orders < Msg , GMsg > ) {
8257 match g_msg {
8358 GMsg :: SayHello => log ! ( "Hello!" ) ,
8459 }
8560}
8661
8762// ------ ------
88- // Before Mount
63+ // Update
8964// ------ ------
9065
91- fn before_mount ( _: Url ) -> BeforeMount {
92- BeforeMount :: new ( )
93- . mount_point ( "main" )
94- . mount_type ( MountType :: Takeover )
66+ #[ derive( Clone ) ]
67+ enum Msg {
68+ Clicked ,
69+ UrlChanged ( Url ) ,
70+ KeyPressed ( web_sys:: KeyboardEvent ) ,
71+ SayHello ,
72+ }
73+
74+ fn update ( msg : Msg , model : & mut Model , orders : & mut impl Orders < Msg , GMsg > ) {
75+ match msg {
76+ Msg :: Clicked => model. clicks += 1 ,
77+ Msg :: UrlChanged ( url) => {
78+ log ! ( url) ;
79+ orders. skip ( ) ;
80+ }
81+ Msg :: KeyPressed ( event) => {
82+ log ! ( event. key( ) ) ;
83+ orders. skip ( ) ;
84+ }
85+ Msg :: SayHello => {
86+ orders. send_g_msg ( GMsg :: SayHello ) ;
87+ }
88+ }
9589}
9690
9791// ------ ------
98- // After Mount
92+ // View
9993// ------ ------
10094
101- fn after_mount ( _: Url , _orders : & mut impl Orders < Msg , GMsg > ) -> AfterMount < Model > {
102- AfterMount :: new ( Model { clicks : 0 } ) . url_handling ( UrlHandling :: None )
95+ fn view ( model : & Model ) -> impl View < Msg > {
96+ vec ! [
97+ button![
98+ format!( "Clicked: {}" , model. clicks) ,
99+ simple_ev( Ev :: Click , Msg :: Clicked ) ,
100+ ] ,
101+ button![ "Say hello" , simple_ev( Ev :: Click , Msg :: SayHello ) , ] ,
102+ ]
103103}
104104
105105// ------ ------
@@ -109,10 +109,10 @@ fn after_mount(_: Url, _orders: &mut impl Orders<Msg, GMsg>) -> AfterMount<Model
109109#[ wasm_bindgen( start) ]
110110pub fn render ( ) {
111111 App :: builder ( update, view)
112+ . before_mount ( before_mount)
113+ . after_mount ( after_mount)
112114 . routes ( routes)
113115 . window_events ( window_events)
114116 . sink ( sink)
115- . before_mount ( before_mount)
116- . after_mount ( after_mount)
117117 . build_and_start ( ) ;
118118}
0 commit comments