perf: 代码优化 components/Screenfull
This commit is contained in:
parent
9c7fd02fb7
commit
d66528f40a
@ -1,5 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, onUnmounted } from "vue"
|
import { ref, watchEffect } from "vue"
|
||||||
import { ElMessage } from "element-plus"
|
import { ElMessage } from "element-plus"
|
||||||
import screenfull from "screenfull"
|
import screenfull from "screenfull"
|
||||||
|
|
||||||
@ -24,31 +24,34 @@ const props = defineProps({
|
|||||||
const tips = ref<string>(props.openTips)
|
const tips = ref<string>(props.openTips)
|
||||||
const isFullscreen = ref<boolean>(false)
|
const isFullscreen = ref<boolean>(false)
|
||||||
|
|
||||||
const click = () => {
|
const handleClick = () => {
|
||||||
const dom = document.querySelector(props.element) || undefined
|
|
||||||
if (!screenfull.isEnabled) {
|
if (!screenfull.isEnabled) {
|
||||||
ElMessage.warning("您的浏览器无法工作")
|
ElMessage.warning("您的浏览器无法工作")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
const dom = document.querySelector(props.element) || undefined
|
||||||
screenfull.toggle(dom)
|
screenfull.toggle(dom)
|
||||||
}
|
}
|
||||||
|
|
||||||
const change = () => {
|
const handleChange = () => {
|
||||||
isFullscreen.value = screenfull.isFullscreen
|
isFullscreen.value = screenfull.isFullscreen
|
||||||
tips.value = screenfull.isFullscreen ? props.exitTips : props.openTips
|
tips.value = screenfull.isFullscreen ? props.exitTips : props.openTips
|
||||||
}
|
}
|
||||||
|
|
||||||
screenfull.on("change", change)
|
watchEffect((onCleanup) => {
|
||||||
|
// 挂载组件时自动执行
|
||||||
onUnmounted(() => {
|
screenfull.on("change", handleChange)
|
||||||
if (screenfull.isEnabled) {
|
// 卸载组件时自动执行
|
||||||
screenfull.off("change", change)
|
onCleanup(() => {
|
||||||
}
|
if (screenfull.isEnabled) {
|
||||||
|
screenfull.off("change", handleChange)
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div @click="click">
|
<div @click="handleClick">
|
||||||
<el-tooltip effect="dark" :content="tips" placement="bottom">
|
<el-tooltip effect="dark" :content="tips" placement="bottom">
|
||||||
<svg-icon :name="isFullscreen ? 'fullscreen-exit' : 'fullscreen'" />
|
<svg-icon :name="isFullscreen ? 'fullscreen-exit' : 'fullscreen'" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user