当前位置: 首页 > news >正文

无锡论坛网站制作上海网络推广渠道

无锡论坛网站制作,上海网络推广渠道,宣城市城乡建设委员会网站,大学生创业做网站uni-app下,页面跳转后wacth持续监听的问题处理 好久没写博客了,最近碰到了一个uni-app(vue2)开发小程序的问题,个人觉得很典型,所以拿出来给各位做个参考。 需求场景: 全局轮询用户权限。简单…

uni-app下,页面跳转后wacth持续监听的问题处理

好久没写博客了,最近碰到了一个uni-app(vue2)开发小程序的问题,个人觉得很典型,所以拿出来给各位做个参考。

需求场景:

全局轮询用户权限。简单点说,就是用户登录后,要根据其权限判断是否能进入某个页面,或者控制使用某个功能之类的。由于权限可能会发生变化,前端就需要事实的进行响应。由于我是在登录后开始轮询用户权限接口,并保存在vuex中,并通过全局注入mixins使其变为全局变量,在需要用到的地方拿出来做处理。在否定了使用websocket之后,我决定使用watch在特定的页面去进行处理。

碰到的问题:

在A页面监听权限数据的时候,处理对应的业务逻辑,根据不同岗位权限显示不同的功能按钮。然而在跳转到B页面之后,发现其仍在继续执行监听内容。如果B页面也有wacth监听,两者会叠加,如果监听的也是该内容,会产生冲突甚至报错;再不济也会影响性能。第一感觉是因为navitagorTo的跳转方式导致的,因为A页面并没有被销毁掉,所以其仍会继续执行。所以讲跳转方式改为redirectTo进行验证,发现经过redirectTo跳转后,由于A页面被销毁,所以没有继续触发A页面的wacth。但业务逻辑上,不能直接销毁前页面,因为要返回。

解决思路:

1.在wacth的handler方法中加入条件判断;但这样仍然会触发wacth,只是不执行里面的内容。也不是我们想要的。
2.要解决这个问题,就得要在页面跳转前销毁掉wacth监听,但wact:{}写法显然不能销毁。

解决方案:
1.考虑到wacth是vue组件实例上挂载的一个对象方法(毕竟vue3的wacth是直接从vue中import出来的),所以决定丢弃传统的wacth:{}写法,改用**$watch**方法进行实现。
2.在app.vue中的globalData中加入全局变量:wather,根据其状态判断是否创建或销毁监听。
3.onShow生命周期中创建监听。onHide生命周期中移除监听。

代码:

// mixins中加入如下方法
methods: {
$createWatcher(name) {getApp().globalData.watcher = this.$watch('$userInfo.auth',val => {this[name](val)},{ deep: true, immediate: true })}
}$removeWatcher() {// 检查是否有已存在的观察者if (getApp().globalData.watcher) {// 调用观察者返回的取消函数,即取消对特定属性的监听getApp().globalData.watcher()console.log('Watch 移除成功!')} else {console.log('没有观察者可移除!')}
}
//pageonShow() {// 此处传递的参数为函数名。所以methods里的函数要与此参数相同this.$createWatcher('changeAuth') },onHide() {this.$removeWatcher()},methods: {changeAuth(val) {// val为$createWatcher中$wacth传回的监听数据。以下内容与watch: {handler(val){}}的hander内的内容一致const authArr = val.filter(item => item.url === this.$utils.getRouter())const auth = authArr[0].children.filter(item => item.url === 'menu')[0].childrenthis.menu = auth}}

至此,问题解决

http://www.zhongyajixie.com/news/16244.html

相关文章:

  • 做网站用什么技术好百度seo快排软件
  • 做旅游网站的意义淘宝搜索关键词查询工具
  • 亚马逊备案网站建设河南郑州最新消息
  • 网站建设多少钱一年交换友链是什么意思
  • 云南网站开发费用百度账号购买1元40个
  • 想要学做网站搜索引擎推广方法
  • 如何用dw做php网站代码app推广方案怎么写
  • 怎样打开网站制作推广平台排名
  • 电脑访问手机网站跳转2024北京又开始核酸了吗今天
  • 做网站全屏图片拉长代码网站建设的一般步骤
  • 有哪些做淘宝素材的网站百度快速seo优化
  • java ee只是做网站建站流程
  • wordpress推广联盟seo怎么优化方法
  • 鹤壁做网站公司哪家好推广公众号
  • 汽车网站大全代发广告平台
  • 还是网站好seo服务合同
  • 网站备案行业seo免费
  • 可以免费申请试用的网站自动推广工具
  • 布吉网站建设找哪家公司好seo网络优化培训
  • 深圳装饰装修公司关键词优化的策略有哪些
  • 网站或站点的第一个网页西安高端网站建设公司
  • 如何自己做资源类网站河南百度推广公司
  • 郑州网站建设开拓者长沙网站提升排名
  • 拉萨建设网站郑州网络推广效果
  • 网站建设实践报告绪论seo外链推广平台
  • 宿州市住房 建设 官方网站百度搜索关键词怎么刷上去
  • 网上有专业的做网站吗山西seo优化公司
  • 西宁做网站君博优选网站推广是什么
  • 群晖做网站连接数据库网上国网推广
  • 技术培训网站网站排名优化软件联系方式