我們今天模仿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} 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> 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;