绷项目并更改属性的值是很常见的,但我还是写这种代码简化切换和的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作为第一个参数传递,它将被改变,在“避免突变”等方面可能不需要。 –