我们为了减少服务器请求和页面等待时间,会keep列表页面,从列表编辑页面返回列表页时,列表页是缓存住的。
但是这样对用户不友好,我们希望在缓存住内容的同时,把编辑过的那条item给更新下,其他的还是不动。
着么实现呢?方法如下:
activated(){
// 编辑过的item内容通过vuex传递过来
let newItem = this.$store.editItem
if (newItem) {
this.pageListData.forEach ((item, index) => {
if (item.id === newItem.id) {
let tempItem = Object.assign(item, newItem)
this.$set(this.pageListData, index, tempItem)
}
})
}
}
以上代码写在列表页上,然后在编辑页将你要修改的item的数据通过vuex传递过来就能实现上述需求了。
这里用到的这个activated()是vue的生命周期钩子,它不同于created(),每次进入页面都会执行一次。
还有一个生命周期钩子,deactivated(),每次离开页面的时候都会执行一次,暂时还没用过,有用过的朋友可以给我留言,分享下经验。
网友评论