记一次A标签页”调“用B标签页中的方法

在一次开发中,需求是:A标签页填完数据,点击保存按钮,然后B标签页中的数据会刷新。

这在单页面项目中很好实现,可这是两个标签页,笔者想不到该怎么做,这时同事和笔者说,这种是做不到的,它们是不同的页面,所以不能操作,但是,我们可以换一种思路,我们采取监听的方式:

当我们在编辑A标签页时,当前页面是属于激活状态的,别的标签页是隐藏状态,当我们保存了A标签页中的信息,然后切到B标签页,则B标签页处于激活的状态,所以我们可以采用下面的方法

// 新建一个.ts文件,比如page-active.ts

// 监听页面显示隐藏
export const useVisibility = (showCb: any, hideCb?: any) => {
  let hidden: string = "";
  let state: string = "";
  let visibilityChange: string = "";
  if (typeof document.hidden !== "undefined") {
    hidden = "hidden";
    visibilityChange = "visibilitychange";
    state = "visibilityState";
  } else if (typeof (document as any).mozHidden !== "undefined") {
    hidden = "mozHidden";
    visibilityChange = "mozvisibilitychange";
    state = "mozVisibilityState";
  } else if (typeof (document as any).msHidden !== "undefined") {
    hidden = "msHidden";
    visibilityChange = "msvisibilitychange";
    state = "msVisibilityState";
  } else if (typeof (document as any).webkitHidden !== "undefined") {
    hidden = "webkitHidden";
    visibilityChange = "webkitvisibilitychange";
    state = "webkitVisibilityState";
  }

  let cb = function () {
    if ((document as any)[state] == hidden) {
      hideCb && hideCb();
    } else {
      showCb && showCb();
    }
  };

  // 移除并开启监听
  document.removeEventListener(visibilityChange, cb, false);
  document.addEventListener(visibilityChange, cb, false);
};

然后我们在B标签页中写下如下代码

import { useVisibility } from '@/utils/page-active'

useVisibility(() => {
  // 此处写刷新B页面的方法
})

这样就可以做到A标签页”调用“B标签页的方法了

最后

感谢你的阅读~

如果你有任何的疑问欢迎您在后台私信,我们一同探讨学习!

如果觉得这篇文章对你有所帮助,点赞、在看是最大的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值