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;}})    
}
推荐问题