【发布时间】:2016-10-23 17:31:13
【问题描述】:
我有一个简单的 todolist 结构进入组件的状态。这是一个数组,其中有两个字段称为“内容”,一个字段称为“完成”。我使用从父级传递给 TodoItem 子级的简单 onClick() 函数捕获行项的单击(如 React 教程建议):
render() {
const tthis = this;
var myList = tthis.state.todos.map(function(todo,index){
var myOnCLick = function(){
var newTodo = {content: todo.content, done: !todo.done};
tthis.state.todos[index] = newTodo;
tthis.setState({});
}
return <Todo key={index} todo={todo} onClick={myOnCLick}/>
})
return (
<ul className="list">
{ myList }
</ul>
)
}
这段代码没有问题,但我不太喜欢。 我会找到一些好的解决方案来更改数组中单个项目的值。我在 React DOC 的 Immutability 助手中发现了这一点:
{$set: any} 完全替换目标。
在这个论坛的一个很好的答案中,我看到了一个例子:
this.setState({
todos: update(this.state.todos, {1: {done: {$set: true}}})
但在我的情况下我不能使用 1。我有索引,它为我提供了待办事项列表中点击的待办事项的索引。
【问题讨论】:
标签: javascript reactjs