基于React的一個簡單Todo-list
先賭為快:在線DEMO,感覺還不錯點一下star -_- ~
源碼地址:
一、已經完成的功能
1、新增選項(默認未完成)
2、完成狀態可以切換
3、當前選項可以刪除
4、全部選項選中狀態切換
5、全部個數,完成個數,未完成個數實時讀取
6、刷新狀態不變
7、雙擊可以編輯(有個坑:雙擊編輯內input的keyUp Enter保存會連帶觸發blur失去焦點保存。已解決:通過設置一個可以保存的狀態控制)
二、待完成(新增路由)
三、目錄結構
3.1、主要邏輯只涉及:Todo(父組件),TodoAdd(輸入框子組件一),TodoList(選項列表子組件二)
3.2、父子組件通過props(可以是自定義屬性、對象、回調函數)通信,每個組件都有自己的state,可以通過setState改變當前的state。
例如:新增的時候,父組件是如何知道新增了一個什么內容呢?如下:
// Todo.jsx內 //1 傳遞給子組件的回調函數,只要有心得內容傳遞過來,就更新當前的:list。list只要更新,通過props傳遞給TodoList的data就會更新,DOM就會新增一個選項列表 onAddSubmit(addTitle) { console.log("增加了:" + addTitle) let addItem = { title: addTitle, isFinished: false } this.state.list.unshift(addItem) this.setState({ list: this.state.list }) this._saveToSession() }// 通過props傳遞給子組件(等待使用)<TodoAdd onAddSubmit={this.onAddSubmit} />// TodoAdd.jsx// 2、 主站蜘蛛池模板: 昌吉市| 宾阳县| 三门县| 开远市| 武功县| 杭州市| 鄂托克旗| 诸城市| 鹿泉市| 彰武县| 东至县| 宁远县| 抚宁县| 汤原县| 金湖县| 长春市| 积石山| 罗甸县| 辽宁省| 兴安盟| 营山县| 溧水县| 江津市| 伊宁市| 田林县| 瑞昌市| 舒城县| 孟连| 邵阳县| 兖州市| 巴里| 青川县| 武强县| 科技| 融水| 奉节县| 轮台县| 新巴尔虎左旗| 鄂伦春自治旗| 绩溪县| 黄浦区|