Files

26 lines
530 B
Vue

<script setup>
/** 官网可配置图片统一处理加载失败;替代内容由调用处提供,不伪造头像或二维码。 */
import { ref, watch } from "vue";
defineOptions({ inheritAttrs: false });
const props = defineProps({ src: String, alt: String });
const failed = ref(false);
watch(
() => props.src,
() => {
failed.value = false;
},
);
</script>
<template>
<img
v-if="src && !failed"
v-bind="$attrs"
:src="src"
:alt="alt"
@error="failed = true"
/>
<slot v-else />
</template>