hi! I'm trying to read a JSON array from a file, s...
# javascript
t
hi! I'm trying to read a JSON array from a file, store it as a List in my component, and use it to display some stuff, yet I'm getting this error: Warning: Can't call setState on a component that is not yet mounted.Here is my code: The classes to display the list:
Copy code
data 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:
Copy code
class App : RComponent<RProps, RState>() {     
    override fun RBuilder.render() {         
        child(MemberList::class) {}   
    } 
}
Thanks in advance!
a
Copy code
override fun MemberListState.init() {
        val jsonMembers = fetchMembers()
        members = jsonMembers.toList()
    }
Don't call
setState
on
init
t
I changed it, and the page went blank, with these errors:
a
That happens because you are casting a
Promise
to
Array<Member>
t
what should I do instead?
h
Don't you have to parse the json? so like:
fetch().await().json().await().unsafeCast<Array<Member>>
t
I solved it at the end. Thanks!