TheOnlyTails
12/19/2020, 12:45 PMdata class Member(val name: String, val githubUrl: String, val positions: List<String>)
external interface MemberListState : RState {
var members: List<Member>
}
class MemberList : RComponent<RProps, MemberListState>() {
override fun RBuilder.render() {
ul {
for (member in state.members) {
li {
styledA {
css { attrs.href = member.githubUrl }
+member.name
}
}
ul {
member.positions.forEach {
li { +it }
}
}
}
}
}
private fun fetchMembers() = window.fetch("./members.json").unsafeCast<Array<Member>>()
override fun MemberListState.init() {
val jsonMembers = fetchMembers()
members = listOf()
setState {
members = jsonMembers.toList()
}
}
}
The use of the code:
class App : RComponent<RProps, RState>() {
override fun RBuilder.render() {
child(MemberList::class) {}
}
}
Thanks in advance!andylamax
12/19/2020, 1:24 PMoverride fun MemberListState.init() {
val jsonMembers = fetchMembers()
members = jsonMembers.toList()
}
andylamax
12/19/2020, 1:25 PMsetState
on init
TheOnlyTails
12/19/2020, 1:26 PMandylamax
12/19/2020, 1:29 PMPromise
to Array<Member>
TheOnlyTails
12/19/2020, 1:29 PMHankG
12/19/2020, 5:51 PMfetch().await().json().await().unsafeCast<Array<Member>>
TheOnlyTails
12/19/2020, 6:11 PM