@slan-health/taro-vueuse
Version:
taro vue版本hooks
40 lines (39 loc) • 1.27 kB
JavaScript
import { computed, watchEffect, onUnmounted } from "vue";
import { definePlugin } from "../definePlugin.js";
import { refToRaw } from "../utils/index.js";
import limitTrigger from "../utils/limitTrigger.js";
import usePageFocus from "./taro/usePageFocus.js";
const useRefreshOnWindowFocus = definePlugin(
(queryInstance, { refreshOnWindowFocus = false, refocusTimespan = 5e3 }) => {
const refreshOnWindowFocusRef = computed(
() => refToRaw(refreshOnWindowFocus)
);
const refocusTimespanRef = computed(() => refToRaw(refocusTimespan));
const unsubscribeList = [];
const addUnsubscribeList = (event) => {
event && unsubscribeList.push(event);
};
const unsubscribe = () => {
unsubscribeList.forEach((fn) => fn());
};
const subscribe = usePageFocus();
watchEffect(() => {
unsubscribe();
if (refreshOnWindowFocusRef.value) {
const limitRefresh = limitTrigger(
queryInstance.context.refresh,
refocusTimespanRef.value
);
addUnsubscribeList(subscribe(limitRefresh));
}
});
onUnmounted(() => {
unsubscribe();
});
return {};
}
);
export {
useRefreshOnWindowFocus as default
};
//# sourceMappingURL=useRefreshOnWindowFocus.js.map