Files
vant/packages/vant-use/src/usePageVisibility/index.ts
neverland a0b368f1b4 perf(@vant/use): reduce usePageVisibility event binding (#9835)
* perf(@vant/use): reduce usePageVisibility event binding

* chore: update
2021-11-11 17:25:48 +08:00

22 lines
456 B
TypeScript

import { ref, Ref } from 'vue';
import { inBrowser } from '../utils';
let visibility: Ref<VisibilityState>;
export function usePageVisibility() {
if (!visibility) {
visibility = ref<VisibilityState>('visible');
if (inBrowser) {
const update = () => {
visibility.value = document.hidden ? 'hidden' : 'visible';
};
update();
window.addEventListener('visibilitychange', update);
}
}
return visibility;
}