我设置的v-key为name,然后这个数组的顺序发生变化,数据没有变化的时候,点击打印index会错乱,打印的是第一次渲染数组时候的index,比如华北原来index是0,现在它变成3了,点击打印的还是0。这是uni-app在这一块的底层和Vue不一样吗?同样的代码在Vue中就不会出现这个问题
<template>
<view>
<view class="item" v-for="(item,index) in arr" :key="item.name">
<view class="item_name" @click="handleItem(index)">
{{item.name}}
</view>
</view>
<button @click="handleChange" type="default">变变变</button>
</view>
</template>
<script>
export default {
data() {
return {
arr: [{
name: "华北",
num: 1200
}, {
name: "华南",
num: 1001
}, {
name: "东北",
num: 1020
}, {
name: "东南",
num: 200
}, {
name: "西北",
num: 3100
}]
}
},
methods: {
handleItem(index) {
console.log(index)
},
handleChange() {
this.arr = [{
name: "华南",
num: 1001
}, {
name: "东北",
num: 1020
}, {
name: "西北",
num: 3100
}, {
name: "华北",
num: 1200
}, {
name: "东南",
num: 200
}]
}
}
}
</script>
<style scoped>
.item_name {
line-height: 100rpx;
background: #f5f5f5;
border: 1rpx solid #333333;
text-align: center;
}
</style>
Arnbib1on (作者)
:key='index'是没有问题,但是我用:key="item.name"在小程序就会出错
2022-08-02 10:21