diff --git a/packages/vant-use/src/shared.ts b/packages/vant-use/src/shared.ts new file mode 100644 index 000000000..6ea623bfc --- /dev/null +++ b/packages/vant-use/src/shared.ts @@ -0,0 +1 @@ +export const inBrowser = typeof window !== 'undefined'; diff --git a/packages/vant-use/src/useClickAway/index.ts b/packages/vant-use/src/useClickAway/index.ts index 941fe8f7d..6b41cd330 100644 --- a/packages/vant-use/src/useClickAway/index.ts +++ b/packages/vant-use/src/useClickAway/index.ts @@ -1,5 +1,6 @@ import { Ref, unref } from 'vue'; -import { inBrowser, useEventListener } from '../useEventListener'; +import { inBrowser } from '../shared'; +import { useEventListener } from '../useEventListener'; export type UseClickAwayOptions = { eventName?: string; diff --git a/packages/vant-use/src/useEventListener/index.ts b/packages/vant-use/src/useEventListener/index.ts index 5903c7108..a883a9202 100644 --- a/packages/vant-use/src/useEventListener/index.ts +++ b/packages/vant-use/src/useEventListener/index.ts @@ -6,8 +6,7 @@ import { onUnmounted, onDeactivated, } from 'vue'; - -export const inBrowser = typeof window !== 'undefined'; +import { inBrowser } from '../shared'; let supportsPassive = false; if (inBrowser) { diff --git a/src/composition/use-visibility-change.ts b/src/composition/use-visibility-change.ts index 526eaad37..2de6d4430 100644 --- a/src/composition/use-visibility-change.ts +++ b/src/composition/use-visibility-change.ts @@ -7,9 +7,10 @@ import { onBeforeUnmount, } from 'vue'; +// @Experimental export function useVisibilityChange( target: Ref, - onChange: () => void + onChange: (visible: boolean) => void ) { // compatibility: https://caniuse.com/#feat=intersectionobserver if (!inBrowser || !window.IntersectionObserver) { @@ -19,9 +20,7 @@ export function useVisibilityChange( const observer = new IntersectionObserver( (entries) => { // visibility changed - if (entries[0].intersectionRatio > 0) { - onChange(); - } + onChange(entries[0].intersectionRatio > 0); }, { root: document.body } );