第一個栗子?state={name:'Sam'}fn(){const{data}=this.state;data.name='xiaobe';this.setState({data:{...data}})}沒有出現(xiàn)警告,且能實現(xiàn)效果,但這樣的做法合理嗎?第二個栗子?:使用了lodash/find,重新賦值了一個新的數(shù)組,但是原數(shù)組依舊被更改了,為什么?importfindfrom'lodash/find';state={data:[{id:1,name:'xiaobe'},{id:2,name:'Sam'}]}fn(){const{data}=this.state;constnewData=[...data];console.log('修改前data',data);constnewItem=find(newData,{id:1})||{};console.log('修改前newItem',newItem);if(Object.keys(newItem).length){newItem.name='new-xiaobe';}console.log('修改后newItem',newItem);this.setState({data:[...newData],},()=>{console.log('修改后data',data);},);}發(fā)現(xiàn),修改前data里第一條name已經(jīng)從xiaobe變成了new-xiaobe,請問為什么?
跪求!react中直接修改state解構(gòu)出來的值合理嗎?怎么回事哈?。?/h1>
開心每一天1111
2019-10-31 10:28:07
開心每一天1111
2019-10-31 10:28:07