繃項目並更改屬性的值是很常見的,但我還是寫這種代碼簡化切換和的setState更新項目的屬性
handleToggle = (id) => {
const updatedTodos = this.state.todos.map(todo => {
if(todo.id === id){
todo.completed = !todo.completed
}
return todo
})
this.setState({
todos: updatedTodos
})
}
沒有錯,但我發現這就是我寫的部分很多代碼。與push不同,我可以使用spread操作符,或者刪除,我可以簡單地使用一個班輪過濾器方法。任何想法如何縮短上面的代碼?
是第一個參數,{}}強制? –
它可以是'Object.assign({},todo,todo.id === id && {completed:!todo.completed})''? –
第一個參數用於目標對象(請點擊https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign),它確實是一個必需的參數。如果我們將todo作爲第一個參數傳遞,它將被改變,在「避免突變」等方面可能不需要。 –