vue.js - Vue 移除带有它状态的子组件
问题描述
我想删除子组件。我使用 this.rows.splice(index, 1)
当我调用 this.rows.splice(index, 1) VueJs 总是从 this.$children 中删除最后一个组件并将内部状态保存在 component.$data 中;
例子在这里
`https://jsfiddle.net/abratko/gc7h1r34/3/`
怎么修?
解决方案
Vue 默认根据 item 的 index 将每个数据项与每个 vnode 关联起来。这导致在从数组中删除项目后重新渲染列表时,现有的 Vue 组件被重用,但绑定到不同的项目。
这就是为什么您应该始终绑定key
到唯一标识该特定项目的值。在您的示例中,由于每个项目都是一个唯一的字符串,您可以绑定到该字符串:
<row-component v-for="(row, index) in rows" :key="row">
^^^^^^^^^^
推荐阅读
- javascript - 从下拉列表选择中创建一个 url 路径字符串以动态更新 Highcharts 风玫瑰图
- angular - 如何修复被 cors 策略阻止的 Angular 第三方 API 调用?
- ios - SwiftUI View scrollTo 第二次呈现的行为不同
- node.js - 使用 OAuth 时 Google 日历“请求缺少有效的 API 密钥”
- ios - 尝试使用委托来共享来自自定义 tableViewCell 的文本输入并且数据未共享
- php - 如何在 woocommerce 结帐页面中禁用字段
- android - BLE和Android:使用设备公共地址进行直接连接
- python - 如何将此 python 数据转换为 JSON
- java - 我们如何在 LinkedList 中获取元素索引正如所说的那样,它是随机存储的
- android - 如何为 otp 添加自动填充建议