Arrays 如何用VueJ替换对象数组中的一个对象?
我正在用VueJS和AdonisJS构建一个网站,我正在设置一种发布或取消发布文章的可能性,只需将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
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
属性。好吧,我不知道这是可能的,我想我不知怎的破坏了一些东西,谢谢!谢谢你,它就像一个符咒(它向我展示了我犯的一些错误,所以再次感谢!)