學React和Angular有一段時間了蟀给,想檢驗一下學習的成果青柄,就拿Todo這個最簡單的例子練個手吧
React
組件化
一個container component衅枫,里面包含了TodoForm嗦枢,TodoList和Footer三個組件
狀態(tài)管理
Todo的狀態(tài)管理不復雜峭弟,所以沒有使用redux附鸽,就用原生的state來寫就好。三個子組件通過lifting state up瞒瘸,來修改container component中的State
state={todos:[{id:string,title:string,completed:boolean}],filter: number }
Data Binding
因為要顯示Todo List坷备,所以會用到List。React規(guī)定情臭,List item必須要定義key省撑。我要把一個數組綁定到List上,默認的Key就是數組的index俯在,但是這樣做后面發(fā)現(xiàn)其實是有問題的竟秫。后來就在todo的state中加上了一個id,每次創(chuàng)建一條todo時生成一個unique的id
Event Binding
todo程序要實現(xiàn)一個效果跷乐,就是鼠標放到一條todo上時肥败,顯示delete按鈕,移開時不顯示愕提。一開始用onMouseOver/onMouseOut有問題馒稍,好像會跟delete按鈕的事件沖突;然后用onMouseEnter/onMouseLeave浅侨,解決了沖突的問題纽谒,但是當配合filter使用時,還是有問題如输。
最后用了CSS的hover來解決