卸载组件取消监听

This commit is contained in:
xiangheng
2024-06-17 18:04:09 +08:00
parent 68b70c1000
commit eaff9c2759
2 changed files with 80 additions and 88 deletions

View File

@@ -1,5 +1,5 @@
<template> <template>
<view :class="props.mode == 'pop' ? 'mask' : ''" v-show="showBox"> <view :class="props.mode == 'pop' ? 'mask' : ''" v-if="showBox">
<view <view
:class="props.mode == 'pop' ? 'verify-box' : ''" :class="props.mode == 'pop' ? 'verify-box' : ''"
:style="{ 'max-width': parseInt(props.imgSize.width) + 30 + 'px' }" :style="{ 'max-width': parseInt(props.imgSize.width) + 30 + 'px' }"

View File

@@ -22,7 +22,6 @@
height: props.imgSize.height + 'px', height: props.imgSize.height + 'px',
top: '0px', top: '0px',
left: data.moveBlockLeft, left: data.moveBlockLeft,
transition: data.transitionLeft,
}" }"
> >
<image <image
@@ -77,7 +76,6 @@
height: '40px', height: '40px',
'background-color': data.moveBlockBackgroundColor, 'background-color': data.moveBlockBackgroundColor,
left: data.moveBlockLeft, left: data.moveBlockLeft,
transition: data.transitionLeft,
}" }"
> >
<text <text
@@ -98,6 +96,7 @@ import {
ref, ref,
reactive, reactive,
onMounted, onMounted,
onUnmounted,
watch, watch,
computed, computed,
getCurrentInstance, getCurrentInstance,
@@ -175,42 +174,8 @@ const data = reactive({
status: false, //鼠标状态 status: false, //鼠标状态
isEnd: false, //是够验证完成 isEnd: false, //是够验证完成
showRefresh: true, showRefresh: true,
transitionLeft: "",
}); });
// Methods 定义
const init = () => {
data.text = props.explain;
getPictrue();
// #ifdef WEB
window.removeEventListener("touchmove", (e) => {
move(e);
});
window.removeEventListener("mousemove", (e) => {
move(e);
});
window.addEventListener("touchmove", (e) => {
move(e);
});
window.addEventListener("mousemove", (e) => {
move(e);
});
//鼠标松开
window.addEventListener("touchend", (e) => {
console.log('touchend');
end(e);
});
window.addEventListener("mouseup", (e) => {
console.log('mouseup');
end(e);
});
// #endif
};
let startLeft = ref(0); let startLeft = ref(0);
const start = (e) => { const start = (e) => {
// ... 鼠标按下逻辑 // ... 鼠标按下逻辑
@@ -266,6 +231,8 @@ const move = (e) => {
const end = (e) => { const end = (e) => {
e.stopPropagation(); e.stopPropagation();
console.log('end');
// ... 鼠标松开逻辑 // ... 鼠标松开逻辑
data.endMovetime = new Date().getTime(); data.endMovetime = new Date().getTime();
@@ -298,7 +265,8 @@ const end = (e) => {
url: `/captcha/check`, url: `/captcha/check`,
data: sendData, data: sendData,
method: "POST", method: "POST",
}).then((result) => { })
.then((result) => {
let res = result.data; let res = result.data;
data.showRefresh = true; data.showRefresh = true;
data.status = false; data.status = false;
@@ -338,13 +306,12 @@ const end = (e) => {
data.tipWords = ""; data.tipWords = "";
}, 1000); }, 1000);
} }
}).catch((err) => { })
.catch((err) => {
data.status = false; data.status = false;
data.isEnd = true; data.isEnd = true;
console.log(err); console.log(err);
}) });
} }
}; };
@@ -352,7 +319,7 @@ const refresh = () => {
// ... 刷新验证码逻辑 // ... 刷新验证码逻辑
data.showRefresh = true; data.showRefresh = true;
data.finishText = ""; data.finishText = "";
// data.transitionLeft = "left .3s";
data.moveBlockLeft = "0"; data.moveBlockLeft = "0";
data.leftBarWidth = ""; data.leftBarWidth = "";
@@ -363,7 +330,6 @@ const refresh = () => {
getPictrue(); getPictrue();
data.isEnd = false; data.isEnd = false;
setTimeout(() => { setTimeout(() => {
data.transitionLeft = "";
data.text = props.explain; data.text = props.explain;
}, 300); }, 300);
}; };
@@ -400,13 +366,39 @@ const getPictrue = () => {
}); });
}; };
defineExpose({ // Methods 定义
refresh, const init = () => {
}); data.text = props.explain;
getPictrue();
// #ifdef WEB
// window.removeEventListener("touchmove",move);
// window.removeEventListener("mousemove",move);
window.addEventListener("touchmove", move);
window.addEventListener("mousemove", move);
//鼠标松开
window.addEventListener("touchend", end);
window.addEventListener("mouseup", end);
// #endif
};
// 组件挂载时调用 // 组件挂载时调用
onMounted(() => { onMounted(() => {
init(); init();
}); });
onUnmounted(() => {
// #ifdef WEB
window.removeEventListener("touchmove", move);
window.removeEventListener("mousemove", move);
window.removeEventListener("touchend", end);
window.removeEventListener("mouseup", end);
// #endif
});
defineExpose({
refresh,
});
</script> </script>
<style scoped> <style scoped>
.verify-tips { .verify-tips {