放棄Javascript-使用kotlin編寫react前端應用之todoList
一.相較於typescript,kotlin的優點在於
- 配合idea,更強大的程式碼提示
- idea編輯器會註明程式碼塊的this指向
- 更強大的強型別機制
- kotlin更優秀的語言機制
二.下面是用kotlin實現todolist應用
核心元件程式碼
package translate
import kotlinext.js.js
import kotlinx.html.ButtonType
import kotlinx.html.InputType
import kotlinx.html.js.onChangeFunction
import kotlinx.html.js.onClickFunction
import org.w3c.dom.HTMLInputElement
import react.*
import react.dom.*
interface TranslateState : RState {
var text:String
var items:List<String?>
}
class Translate(props: RProps): RComponent<RProps, TranslateState>(props) {
override fun TranslateState.init(props:RProps) {
text=""
//items列表初始化
items=listOf<String>()
console.log(items)
}
override fun RBuilder.render() {
div(classes = "warp"){
h1 { +"TodoList" }
input(type = InputType.text,classes = "search-input",name = "text"){
key = "text"
attrs {
placeholder="請輸入內容"
value=state.text
onChangeFunction={
val target = it.target as HTMLInputElement
setState{
text=target.value
}
}
}
}
button(classes = "search-btn"){
+"確定"
attrs {
onClickFunction={
setState{
items+=text
text=""
}
}
}
}
div (classes = "resultWrap"){
+"代辦列表"
attrs.jsStyle = js {
marginTop="30px"
}
ul {
for ((index,item) in state.items.withIndex()){
li {
key = index.toString()
+"${item}"
button(classes = "btn btn-danger",type = ButtonType.button) {
+"x"
attrs.jsStyle = js {
marginLeft="10px"
}
attrs {
onClickFunction = {
setState {
items = items.filterIndexed { i, _ -> i != index }
}
}
}
}
attrs.jsStyle = js {
marginTop="10px"
}
}
}
}
}
}
}
}
fun RBuilder.translate() = child(Translate::class) {
}
三.效果圖
相關文章
- LeetCode題解:劍指 Offer 40. 最小的k個數,二叉堆,JavaScript,詳細註釋
- Selenium執行JavaScript指令碼
- React UI元件開發心得
- React-Native ‘WKWebView` has no propType for native prop
- React之元件(component)之間的通訊
- React中兩種遍歷資料的方法(map、forEach)
- React 入門-寫個 TodoList 例項
- JavaScript | JavaScript刪除表格除標題行(第一行)的所有行
- JavaScript的三種引入方式
- 通過JavaScript如何做一個仿京東的跟隨圖片放大鏡效果?(附加註釋)簡單實用。
- Web全棧開發學習筆記—Part2 與服務端通訊—e.給React應用加點樣式
- JavaScript的關鍵字和保留字大全
- Kotlin 背景圓頭像圖
- 使用react-router-config配置路由
- 三篇文章帶你快速入門Kotlin(上)
- 30. JavaScript中的“=、 =、===”區別?
- Qt QML之 JavaScript Host Environment
- Android Studio上Kotlin的入門
- React 元件通訊
- LeetCode題解:264. 醜數 II,二叉堆,JavaScript,詳細註釋