javascript - 在 Vue.js 中从 DOM 中删除组件
问题描述
我正在使用 Vue.js(版本 3.x)渲染一些组件
<div v-for="(i, index) in fields" >
<my-component :id="index" ></my-component>
<span class="delete-icon" @click="removeField(index)" >×</span>
</div>
Wherefields
只是一个像这样的数组:[0,1,2,3,4,...]
Vue 渲染与元素数量一样多的组件以及具有事件侦听器fields
的跨度来触发函数,该函数获取渲染组件的索引,用于从 DOM 中删除相应的组件。delete-icon
removeField()
但是,我不确定如何向 Vue 指示需要删除特定组件 - 换句话说,我如何告诉 Vue 删除我单击的删除图标的特定组件,而不是仅仅从fields
数组中删除一个元素,这将使用更少的组件重新渲染集合,始终导致最后一个组件被删除。
我也将 unique id
's 传递给组件,因此从技术上讲,我可以使用 vanilla JS 删除组件,但想知道 Vue 是否提供了更优雅的解决方案。
解决方案
您可以创建一个方法来过滤fields
不建议index
用作唯一键。
removeField(index) {
this.fields = this.fields.filter((number, i) => {
return i !== index;
});
},
推荐阅读
- python - 试图做一个猜猜我在 Python 上使用 GUI 制作的数字游戏。但是程序在运行时没有响应
- python - Plotly Choropleth 地图在 Jupyter 中成功加载,但不是 Dash 浏览器
- javascript - 为什么要把赋值语句放在括号中?
- selenium - 如何在量角器中处理 shadow DOM 中的元素?deepcss 不工作
- ruby-on-rails - Ruby on Rails Cloudinary 错误:“Cloudinary”缺少服务适配器
- c# - 操纵杆坐标
- c# - SQLite 日历周开始
- css - 为什么我不能在 Ruby on Rails 中不使用 !important 来更改 link_to 文本颜色?
- spring - 无法获取查询元数据 org.postgresql.util.PSQLException 的连接:连接尝试失败
- elixir - Elixir Mix 版本 - 如何将额外文件复制到 Phoenix 应用程序的压缩包中?