Material-UI的Chip删除后列表没更新怎么办?
我在用Vue+Material-UI做标签列表时遇到问题,Chip的onDelete事件触发后,虽然图标消失了但数据没同步更新。
场景是这样的:v-for循环渲染Chip列表,每个Chip绑定了onDelete事件。我尝试手动调用emit更新父组件数据,但删除后页面还是显示原列表。代码是这样的:
<template>
<div>
<MUIChip
v-for="(tag, index) in tags"
:key="index"
:label="tag"
deletable
@delete="handleDelete(index)"
/>
</div>
</template>
<script>
export default {
data() {
return {
tags: ['标签1', '标签2']
}
},
methods: {
handleDelete(index) {
this.tags.splice(index, 1) // 这里执行了删除操作
}
}
}
</script>
控制台没报错,但实际删除后页面还是显示原来的两个标签。用Vue DevTools看数据确实更新了,但界面不刷新,这是怎么回事?是不是事件绑定哪里漏了?
:key上,你用的是index,这玩意儿在列表更新时会乱套。改成唯一值比如标签本身就好使了。懒人方案直接改:key="tag",代码如下:如果标签可能重复,那就给每个标签加个唯一ID,用ID当
:key。别嫌麻烦,这一步省不了。