删除元素,不要直接操作state里面的值,需要把要更改的值复制一份。 所以使用展开操作符,把数组复制一遍。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import React ,{Component} from 'react' class App extends Component{ constructor(props){ super (props) this .state = { list:[ "星期一" , "星期二" , "星期三" ], inputValue: "" } } render(){ return ( <div> { this .state.list.map((ele,index)=>{ // 把index传入 return <p key={index} >{ele}<button onClick={ this .del.bind( this ,index)}>删除</button></p> }) } <input type= "text" value={ this .state.inputValue} onChange={ this .change.bind( this )}/> <button onClick={ this .add.bind( this )}>添加</button> </div> ) } change(e){ this .setState({ inputValue:e.target.value }) } add(){ this .setState({ list:[... this .state.list, this .state.inputValue], inputValue: "" }) } del(index){ //展开数组 var list = [... this .state.list] //删除元素 list.splice(index,1) this .setState({ list:list }) } } export default App; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通