snrostov
11/03/2017, 8:24 AMclass HomeView : ReactDOMComponent<HomeView.Props, HomeView.State>() {
companion object : ReactComponentSpec<HomeView, Props, State>
При этом все Props-ы обязаны быть mutable, иначе dsl не будет работать
вариант 3: Если использовать подход с оператором +
, то для объявления компонента достаточно объявить сам компонент (наследовать определенный класс или интерфейс), а опретаор +
будет уже определен.
{
+Section(key = "s1", title = "About") {
+"About contents"
}
}
class Section(key: Any?, val title: String, val body: WidgetBody) : StatelessWidget(key)
А с HKT (https://github.com/47deg/KEEP/blob/2f2f27ebbab143933a1d63fcdaf40c8292cd2f97/proposals/type-classes.md), вобще можно будет объявить higher-kind класс Rendreable, добавлять его к существющим классом, и, соответсвенно рендерить:
// in existed module
data class User(val name: String)
object UserRenderrer: Renderable<User> {
fun User.render() = Row {
+ Column { +"Name: " }
+ Column { +name }
}
}
fun someOtherComponent(user: User) given Renderable<User> = Row { +user }