chore: prefer using unref

This commit is contained in:
chenjiahan 2020-09-09 10:19:23 +08:00
parent 53d69b3e3a
commit 250c0aa330
2 changed files with 18 additions and 18 deletions

View File

@ -1,8 +1,7 @@
import { on, off } from '../utils/dom/event'; import { on, off } from '../utils/dom/event';
import { import {
Ref, Ref,
ref, unref,
isRef,
watch, watch,
onMounted, onMounted,
onActivated, onActivated,
@ -11,7 +10,7 @@ import {
} from 'vue'; } from 'vue';
export function useGlobalEvent( export function useGlobalEvent(
target: Ref<EventTarget>, target: EventTarget | Ref<EventTarget>,
event: string, event: string,
handler: EventListener, handler: EventListener,
passive = false, passive = false,
@ -19,25 +18,24 @@ export function useGlobalEvent(
) { ) {
let binded: boolean; let binded: boolean;
if (!isRef(target)) { const add = () => {
target = ref(target); const element = unref(target);
}
function add() { if (binded || (flag && !flag.value) || !element) {
if (binded || (flag && !flag.value) || !target.value) {
return; return;
} }
on(target.value, event, handler, passive); on(element, event, handler, passive);
binded = true; binded = true;
} };
function remove() { const remove = () => {
if (binded && target.value) { const element = unref(target);
off(target.value, event, handler); if (binded && element) {
off(element, event, handler);
binded = false; binded = false;
} }
} };
if (flag) { if (flag) {
watch(flag, () => { watch(flag, () => {

View File

@ -1,13 +1,15 @@
import { Ref, ref, onMounted, nextTick } from 'vue'; import { Ref, ref, unref, onMounted, nextTick } from 'vue';
export const useRect = (el: Ref<Element>) => el.value.getBoundingClientRect(); export const useRect = (element: Element | Ref<Element>) => {
return unref(element).getBoundingClientRect();
};
export const useHeight = (el: Ref<Element>) => { export const useHeight = (element: Element | Ref<Element>) => {
const height = ref(); const height = ref();
onMounted(() => { onMounted(() => {
nextTick(() => { nextTick(() => {
height.value = useRect(el).height; height.value = useRect(element).height;
}); });
}); });