Arrays 如何用VueJ替换对象数组中的一个对象?

Arrays 如何用VueJ替换对象数组中的一个对象?,arrays,object,vue.js,Arrays,Object,Vue.js,我正在用VueJS和AdonisJS构建一个网站,我正在设置一种发布或取消发布文章的可能性,只需将draft属性设置为true或false 这个属性版本可以从索引中看到,在索引中可以看到所有的文章。我制作了一个表,其中有一个操作按钮,可以切换属性,该属性将向具有ID的Adonis发送HTTP POST请求 我关心的是接下来会发生什么:我不认为替换整个阵列是一个好的选择,但我应该怎么做呢?我尝试了以下方法: handlePublish (id) { this.$axios.post('/pos

我正在用VueJS和AdonisJS构建一个网站,我正在设置一种发布或取消发布文章的可能性,只需将
draft
属性设置为
true
false

这个属性版本可以从索引中看到,在索引中可以看到所有的文章。我制作了一个表,其中有一个操作按钮,可以切换属性,该属性将向具有ID的Adonis发送HTTP POST请求

我关心的是接下来会发生什么:我不认为替换整个阵列是一个好的选择,但我应该怎么做呢?我尝试了以下方法:

handlePublish (id) {
  this.$axios.post('/post/publish', {id: id}, {
    headers: {
      'Authorization': `Bearer [some token]`
    }})
    .then(response => {
      console.log(response)
      let toDelete = ''
      this.posts.map((post, index) => {
        if (post.id === id) {
          toDelete = index
        }
      })

    this.posts.splice(toDelete, 1)
    this.posts.push(response.data)
 })
 .catch(e => console.log(e.response))
}
但不知何故,除了数据库之外,没有任何东西得到更新


提前感谢您

您正在使用
map
对数组进行迭代。相反,您可以使用
map
通过返回新元素代替旧元素来获取更新的数组

.then(response => {
    this.posts = this.posts.map((post, index) => {
        if (post.id === id) {
          return response.data
        }
    })
}

当您可以简单地更新阵列中已经存在的现有帖子时,为什么要分割和推送整个帖子?我的意思是你没有改变数据结构,你只是在更新一个对象属性。在
success
上,你只需在你的帖子数组中找到你从回复中获得的帖子,并更新它的
draft
属性。好吧,我不知道这是可能的,我想我不知怎的破坏了一些东西,谢谢!谢谢你,它就像一个符咒(它向我展示了我犯的一些错误,所以再次感谢!)