【发布时间】:2019-05-31 21:14:59
【问题描述】:
我正在做一个 todo 应用来练习 React。我击中了一个拦截器,现在我正试图弄清楚如何唯一地编辑一张卡片。
目前当我点击编辑时,我所有的卡片都设置为isEditing == true。我尝试添加键和索引,但似乎无法唯一标识所选卡。
如我的 gif 图中所示:
显然预期的结果是它应该只将isEditing == true 设置为选定的卡。
请参阅下面的代码。
更多上下文: 有状态组件将道具传递给该组件,我使用react-bootstrap(因此Panel,Button),我删除了一些简洁的代码(construct 等等)。
edit() {
this.setState({
isEditing: true
})
}
renderEditDoneButtons() {
return (
<div>
<Button onClick={this.edit}>edit</Button>
</div>
)
}
renderNote(note) {
return (
<p> {note} </p>
)
}
renderCard(note, i) {
return (
<Panel key={i}
index={i}>
{
this.state.isEditing ?
this.renderForm() :
this.renderNote(note.note)
}
</Panel>
)
}
render() {
return (
<div>
{this.props.notes.map(this.renderCard)}
</div>
)
}
【问题讨论】:
-
同一个id的
renderEditDoneButtons()按钮怎么链接到卡片上?如果按钮与卡片具有相同的 ID,您可以创建一个数组,其中每个卡片都有单独的编辑状态。或者您可以有一个变量来存储当前正在编辑的卡片的 ID,然后您可以相应地显示该卡片 -
您希望一次只能编辑一个吗?或者你想让用户基本上打开/关闭编辑?
标签: javascript reactjs ecmascript-6 frontend