【发布时间】:2020-01-05 21:26:24
【问题描述】:
我的数组状态正在渲染,我可以毫无问题地推送新元素,但是,当我尝试添加特定索引时,反应正在改变先前元素的状态。 之前状态的例子:
{this.state.numOfRows.map((v, k) => (
<Item add={this.add.bind(this)} key={`item-${k}`} index={k} item={v} />
))}
这将呈现一个带有 option = 0 的 html 元素; 因此,当我调用 this.add(index) 道具时,我可以在我的数组上再推送 2 或 3 个元素,并更改 1 和 2 的选项。 但是,例如,当我调用 this.add(index) 在索引 2 中添加一个新元素时,我之前选择的选项会被更新,并且选项中带有 0 的新元素会显示在最后一个索引中。
【问题讨论】:
-
您的问题是您正在使用
key的数组索引。 Instaed 使用更具体的东西,例如数据库中的唯一 ID。第二个问题是您如何添加项目。在数组的副本上使用splice以在索引arr.splice(idx, 0, item)处变异/插入 -
谢谢@JohnRuddell。现在可以了!
标签: javascript reactjs