react 按id修改state里的数组的值,写法如何优化,写的优雅

this.state = {
    list:[
        {
            id:1,
            name:'list1',
            editing:false
        },
        {
            id:2,
            name:'list2',
            editing:false
        },
        {
            id:3,
            name:'list3',
            editing:false
        }
    ]
}
handleClick=(id)=>{
        for(let i=0;i<this.state.list.length;i++){
            if (this.state.list[i].id===id){
                this.state.list[i].editing=true
                break
            }
        }
        this.setState({
            list:this.state.list
        })
    }

比如修改id=1的editing=true如何写的优雅,我写的for循环看着很low...

阅读 3.6k
2 个回答
const newList = list.map(v => {
    const newV = {
        ...v,
        editing: v.id === 1
    }
    return newV;
})
handleClick (id) {
    this.setState({list:this.state.list.map(val=>{val.id==id&&(val.editing=true));return val;}})    
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题