<template>
<img ref="imgRef">
</template>
<script setup lang="ts">
import { ref, nextTick, watch } from 'vue';
import { GET_TOKEN } from '@/utils/token';
const imgRef = ref<any>();
const $props = defineProps(['url']);
watch(() => $props.url, (n) => {
console.log(n, '变化了');
if (n) {
getImage(n);
}
}, { immediate: true });
//这里为什么要使用普通函数,假如用箭头函数会提示Cannot access 'getImage' before initializationCannot access 'getImage' before initialization
function getImage(url: string | { [x: string]: any; } | URL) {
nextTick(() => {
let request = new XMLHttpRequest();
request.responseType = 'blob';
request.open('get', url, true);
// 添加自定义请求头
request.setRequestHeader('token', JSON.parse(GET_TOKEN() as string)?.token);
request.onreadystatechange = e => {
if (request.readyState == XMLHttpRequest.DONE && request.status == 200) {
imgRef.value.src = URL.createObjectURL(request.response);
imgRef.value.onload = () => {
imgRef.value && URL.revokeObjectURL(imgRef.value.src);
}
}
};
request.send(null);
});
}
</script>
这里为什么要使用普通函数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- KUOKUO众享 2023-11-14 17:22关注
因为 function 在声明时会提升,预解析 js 引擎会把 js 里所有的 var 还有 function 提升到当前作用域的最前面
解决 无用评论 打赏 举报
悬赏问题
- ¥15 更换了一个新的win10系统,再下载VS时碰到的问题,是C++组件的?
- ¥15 关于罗技鼠标宏lua文件的问题
- ¥15 halcon ocr mlp 识别问题
- ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
- ¥20 无法创建新的堆栈防护界面
- ¥15 sessionStorage在vue中的用法
- ¥15 wordpress更换域名后用户图片头像不显示
- ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework),并且基于qt实现打开一个web
- ¥30 AD9854 为什么输出波形幅度受限,AI机器人勿扰
- ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework