初学者123
初学者123
  • 发布:2021-09-30 04:21
  • 更新:2021-09-30 10:38
  • 阅读:1243

从评论页面返回后实时刷新评论总数的实现

分类:uni-app

场景:从列表页点击评论按钮,进入评论页面,评论后返回列表页,希望被点击的列表项评论总数实时更新。

实现方法:

列表页template 中伪代码如下:

<view v-for(省略)>  
    <view @click="to_comment(item.post_id, item.id, index)">发表评论</view>  
</view>

onShow 中:

let index = uni.getStorageSync('index');  
let comment_count = uni.getStorageSync('comment_count');  
if (this.record_list.length != 0) {  
    this.record_list[index].comment_count = comment_count;  
}

methods中:

to_comment(post_id, o_user_id, index){  
    uni.setStorageSync('index', index);  
    uni.navigateTo({  
        url: '../comment/comment?post_id=' + post_id + '&o_user_id=' + o_user_id  
    })  
},

评论页面:

onLoad (){  
    this.get_comment_list()  
},  

methods: {  
    get_comment_list() {  
        uni.setStorageSync('comment_count', this.comment_list.comment_count)    //当不评论时,将评论总数缓存  
    },  
    comment(){  
        uni.setStorageSync('comment_count', this.comment_list.comment_count)    //如果有评论,更新缓存  
    }  
}

效果:可实现评论总数的实时更新,并且不用全页面刷新

1 关注 分享
hws007

要回复文章请先登录注册

苏陌

苏陌

回复 初学者123 :
this问题直接箭头函数不香吗?我是看你名字 我才耐心给你说这么多
2021-09-30 09:59
初学者123

初学者123 (作者)

回复 苏陌 :
如果从 onLoad 中接收传值,结果是从评论页面返回,不会触发 onLoad,因此是无效的。这个你试过吗
2021-09-30 09:58
苏陌

苏陌

回复 初学者123 :
uni.$on这个东西就像监听器一样,放在onload就行,不需要放在onshow里面,记得卸载页面的时候 关闭一下uni.$off($event,xx)
2021-09-30 09:58
苏陌

苏陌

回复 初学者123 :
为啥要在onshow里面接收传值?https://uniapp.dcloud.io/api/window/communication?id=off 粘贴复制文档代码实例就可以,他和vue中的bus总线很像
2021-09-30 09:54
初学者123

初学者123 (作者)

回复 苏陌 :
我试过uni.$emit ,在 onshow中使用 uni.$on 接收传值时,无法获取 this 对象。如果你成功了,麻烦分享一下具体代码
2021-09-30 09:49
苏陌

苏陌

uni.$emit不香吗
2021-09-30 09:00