TodoList案例


我們今天模仿ToDoList進行一個簡單的增,刪,改,查的操作

可參考官網  http://www.todolist.cn/    

下邊直接上代碼

 1 import React from 'react';
 2 class App extends  React.Component{
 3   //構造函數
 4   constructor(){
 5     super()
 6     this.state={
 7       arry:[], //展示列表
 8       str:''   //記錄輸入框的值
 9     }
10   };
11   //加載時對數組進行操作 
12   componentWillMount(){ 
13      // 獲取本地數據賦值給myArry
14     var myArry= window.localStorage.getItem('myArry')
15      //判斷myArry是否是空的,如果myArry是空的,就讓它等一個空數組
16     if(myArry == null || myArry ==''){
17       myArry=[]     
18       //如果myArry不是空的,拿到的數據是字符串需要通過split進行轉換成數組
19     }else{   
20       myArry = myArry.split(',')
21     }
22   this.setState ({
23     //轉換過的數組賦值給arry
24     arry:myArry  
25 })
26   };
27   //按鈕點擊事件方法
28   btn(){
29     var val = this.refs.val.value;
30     if(this.refs.val.value ===''){
31       alert("請輸入")
32     }else{
33   
34     this.setState({ 
35        //運用擴展運算符添加數據到arry
36       arry:[...this.state.arry,val]  
37     },function(){
38       // 更新本地數據
39       window.localStorage.setItem('myArry',this.state.arry)
40     })
41     } 
42     // 輸入框值清空
43     this.refs.val.value='';
44   }  
45   render(){
46       return(
47         <React.Fragment>
48           <input type='text' ref='val' onKeyDown={(e)=>{
49             //鍵盤事件
50             if(e.keyCode===13){ 
51               // 調用上面添加的函數
52                this.btn()
53             }
54           }} />
55           <button onClick={this.btn.bind(this)}>提交</button>
56           <ul>
57             {/* 對數組進的遍歷渲染 */}
58              {this.state.arry.map((m,i)=>{
59                return(
60     //  key屬性為唯一值,沒有該屬性,瀏覽器會報警告信息,在做添加操作時會出bug 
61                <li key={i}>{m} &nbsp;&nbsp;
62                <button onClick={()=>{
63                  //通過prompt彈框獲取要修改的內容
64                  var prompt = window.prompt()
65                 // 判斷是不是確認修改
66                  if(prompt != null){
67                    var list = this.state.arry
68                   //在arry數組中找到下標i設置修改個數為1,修改的內容為list
69                    list.splice(i,1,prompt)
70                    this.setState({
71                   //修改過后把list值重新賦給arry
72                      arry:list
73                    },function(){
74                     window.localStorage.setItem('myArry',this.state.arry)
75                    })
76                  }
77 
78                }}>修改</button>&nbsp;&nbsp;&nbsp;
79                <button onClick={()=>{
80                 //  對數組進行截取下標為i  刪除個數為1
81                 this.state.arry.splice(i,1)
82                 this.setState({
83                    //截取過后把list值重新賦給arry
84                   arry:this.state.arry
85                 },function(){
86                   window.localStorage.setItem('myArry',this.state.arry)
87                 })
88                }}>刪除</button>
89                
90                </li>
91                ) 
92                })}
93           </ul>
94         </React.Fragment>
95       )
96     }
97 }
98 
99 export default App;

我們看一下效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM