1 import React, { createRef, Fragment } from "react"; 2 3 export default class Todolist extends React.Component { 4 constructor() { 5 super(); 6 this.state = { 7 obj: [ 8 { title: "吃饭" }, 9 { title: "睡觉" }, 10 { title: "打豆豆" }, 11 { title: "学习" }, 12 { title: "打游戏" }, 13 ], 14 }; 15 this.inputval = createRef(); 16 } 17 fun = () => { 18 return this.state.obj.map((v, i) => { 19 return ( 20 <li key={i}> 21 <span>{v.title}</span>---- 22 <button onClick={this.del.bind(this, i)}>删除</button>----- 23 <button 24 onClick={() => { 25 this.updata(i); 26 }} 27 > 28 编辑 29 </button> 30 </li> 31 ); 32 }); 33 }; 34 add = () => { 35 if (this.inputval.current.value !== "") { 36 let newarr = []; 37 newarr = [...this.state.obj, { title: this.inputval.current.value }]; 38 this.setState({ 39 obj: newarr, 40 }); 41 this.inputval.current.value = ""; 42 } 43 }; 44 del = (i) => { 45 if (window.confirm("确认要删除吗?")) { 46 let newarr = []; 47 newarr = this.state.obj; 48 newarr.splice(i, 1); 49 this.setState({ 50 obj: newarr, 51 }); 52 } 53 }; 54 updata = (i) => { 55 let newword = window.prompt("请输入编辑后的内容"); 56 if (newword) { 57 let newarr = []; 58 newarr = this.state.obj; 59 newarr[i].title = newword; 60 this.setState({ 61 obj: newarr, 62 }); 63 } 64 }; 65 clear = () => { 66 this.setState({ 67 obj: [], 68 }); 69 }; 70 71 render() { 72 return ( 73 <Fragment> 74 {this.state.obj.length === 0 ? ( 75 <h3>暂无数据</h3> 76 ) : ( 77 <ul>{this.fun()}</ul> 78 )} 79 80 <input type="text" ref={this.inputval} /> 81 <button onClick={this.add}>添加</button> 82 <button onClick={this.clear}>清空</button> 83 </Fragment> 84 ); 85 } 86 }