forked from JetBrains/kotlin-wrappers
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReactRouterDom.kt
More file actions
119 lines (103 loc) · 2.33 KB
/
ReactRouterDom.kt
File metadata and controls
119 lines (103 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package example
import react.VFC
import react.create
import react.dom.html.ReactHTML.div
import react.dom.html.ReactHTML.h2
import react.dom.html.ReactHTML.h3
import react.dom.html.ReactHTML.li
import react.dom.html.ReactHTML.ul
import react.router.Route
import react.router.Routes
import react.router.dom.BrowserRouter
import react.router.dom.Link
import react.router.useLocation
import react.router.useParams
val Home = VFC {
h2 {
+"Home"
}
}
val About = VFC {
h2 {
+"About"
}
}
val Topics = VFC {
val location = useLocation()
div {
h2 {
+"Topics"
}
ul {
li {
Link {
to = "/components"
+"Components"
}
}
li {
Link {
to = "/props-v-state"
+"Props v. State"
}
}
}
Routes {
Route {
path = "${location.pathname}/:topicId"
element = Topic.create()
}
Route {
path = location.pathname
element = h3.create { +"Please select a topic." }
}
}
}
}
val Topic = VFC {
val topicId = useParams()["topicId"]
?: return@VFC
h3 {
+"Requested topic ID: $topicId"
}
}
val ReactRouterDomApp = VFC {
BrowserRouter {
div {
ul {
li {
Link {
to = "/"
+"Home"
}
}
li {
Link {
to = "/about"
+"About"
}
}
li {
Link {
to = "/topics"
+"Topics"
}
}
}
Routes {
Route {
path = "/about"
element = About.create()
}
Route {
path = "/topics"
element = Topics.create()
}
Route {
path = "/"
element = Home.create()
}
}
}
}
}