【问题标题】:Duplicate keys in component v-for loop组件 v-for 循环中的重复键
【发布时间】:2018-09-29 18:15:07
【问题描述】:

v-for 重复键问题

这返回一个列表就好了,但是当我在数组中修改一个用户时,比如 user.role = 'something',它说我有重复的键。密钥是用 user.id 设置的,这是他们的 firebase 密钥,所以不能重复吗?结果是修改后的用户接管了列表中的其他用户,所以它显示了两次(我没有尝试过两个以上的用户),但是如果我回去然后重新访问这个列表,它会显示更新后的数据符合预期。

V-for 循环:

<ManageUsersListItem
  v-for="user in sortedUsers"
  :key="user.id"
  :user="user"
  @removeManager="removeManager(user)"
  @makeManager="makeManager(user)"
  @removeUser="removeUser(user)"
/>

数据:

data() {
  return {
    users: [],
  }
},
firestore() {
  return {
    users: db.collection('brands').doc(this.brand.id).collection("users")
  }
},

对数组进行排序:

computed: {
  sortedUsers() {
    return this.users.sort(function(a,b) {
      var c = new Date(a.userAddedOn)
      var d = new Date(b.userAddedOn)
      return c-d
    })
  }
},

我用来更改用户角色的方法:

methods: {
  makeManager(user) {
     this.$firestore.users.doc(user.id).update({
        role: 'admin'
     })
  },
},

【问题讨论】:

  • 或许您可以向我们展示sortedUsers 对象的内容?
  • 控制台现在记录了它,这实际上可能是问题所在......它是一个观察者。我将尝试从 firestore 返回一个正确的数组 ????????
  • 已确认...手动调用 firestore 并推送到 data() 用户数组工作得非常好@acdcjunior
  • 好的!很高兴它成功了!

标签: arrays vue.js vue-component v-for


【解决方案1】:

为了避免重复键使用 index 而不是 user.id

<ManageUsersListItem
 v-for="(user, index) in sortedUsers"
 :key="index"
 :user="user"
 @removeManager="removeManager(user)"
 @makeManager="makeManager(user)"
 @removeUser="removeUser(user)"
/>

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2017-12-01
    • 2020-06-21
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多