perf(@vant/use): reduce usePageVisibility event binding (#9835)

* perf(@vant/use): reduce usePageVisibility event binding

* chore: update
This commit is contained in:
neverland
2021-11-11 17:25:48 +08:00
committed by GitHub
parent a9ce9096e4
commit a0b368f1b4
4 changed files with 21 additions and 23 deletions
@@ -1,18 +1,21 @@
import { ref } from 'vue';
import { ref, Ref } from 'vue';
import { inBrowser } from '../utils';
import { useEventListener } from '../useEventListener';
let visibility: Ref<VisibilityState>;
export function usePageVisibility() {
const visibility = ref<VisibilityState>('visible');
if (!visibility) {
visibility = ref<VisibilityState>('visible');
const setVisibility = () => {
if (inBrowser) {
visibility.value = document.hidden ? 'hidden' : 'visible';
}
};
const update = () => {
visibility.value = document.hidden ? 'hidden' : 'visible';
};
setVisibility();
useEventListener('visibilitychange', setVisibility);
update();
window.addEventListener('visibilitychange', update);
}
}
return visibility;
}