【发布时间】:2020-07-21 13:43:01
【问题描述】:
用户可以根据需要添加任意数量的 div。但他也可以删除其中的一些。我不使用任何ID。
我已经阅读了一些关于删除的主题,都使用 filter/splice,但使用了 Id。
没有ID怎么删除div?
app.js
addDiv = () => {
this.setState({
divs: [...this.state.divs, {...}]
})
};
添加新的 div 块:
<button onClick={this.addDiv}>Add New</button>
div.js
新的 div 块结构:
更新:对不起,我的错误,在“行”div 中又忘记了 1 个div。所以parentNode 和parentElement 我猜是行不通的。
<div className="row">
<div className="col-12">
<div>
</div>
<div>
<p></p>
</div>
<button onClick={remove()}>Remove</button> //* here remove the whole block with classname "row" */
</div>
</div>
const remove = () => {
e.currentTarget.closest('.row').remove()
};
更新 2:所以e.currentTarget.parentNode.remove(); 完成了这项工作。简单快速。但正如我之前写的:'row'-div 保持不变。有什么建议吗?
更新 3:更新了删除功能。我确实按照我的计划工作,但如果这是一个清晰的编码 - 不知道。还是谢谢!
【问题讨论】:
-
onClick={remove()}正在调用删除而不点击。 -
你在 divs 数组中存储了什么,你能分享你的数据吗?
-
按索引删除
-
你需要维护一个添加的div列表的状态,然后你可以删除带有div id的div。您可以按照示例 here 并在示例中将输入替换为您的 div。
-
你如何尝试这样做完全违背了所有 React 设计理念。网上一定有无数的“待办事项”教程。查看其中任何一个,以找出如何以使用 React 有意义的方式实现这一点。
标签: javascript reactjs state