Ganchos personalizados de vue3.0
que son los ganchos
Esencialmente, un gancho es una función, pero un gancho encapsula el componente API (ref, reactivo, calculado, reloj, función de ciclo de vida) en la función de combinación de configuración, etc., y extrae el código (código público, componentes públicos, etc. ), lo que hace que el código sea más conciso.
hook es similar a mixin en vue2
vueuse encapsula muchas funciones de enlace público
Convertir img de gancho personalizado a base64
gancho / tobase64.ts
import {
onMounted } from "vue"
type Options = {
el: String
}
export default function ( options: Options) : Promise< {
baseUrl: string} > {
return new Promise ( ( resolve) => {
onMounted ( ( ) => {
let imgDom: HTMLImageElement = document. querySelector ( options. el) as HTMLImageElement
imgDom. onload = ( ) => {
resolve ( {
Baseurl: toBase64 ( imgDom)
} )
}
} )
const toBase64 = ( el: HTMLImageElement) => {
const canvas = document. createElement ( "canvas" )
const ctx = canvas. getContext ( "2d" )
canvas. width = el. width
canvas. height = el. height
ctx? . drawImage ( el, 0 , 0 , canvas. width, canvas. height)
return canvas. toDataURL ( 'image/png' )
}
} )
}
utilizar
< template>
< ! -- < Layout> < / Layout> -- >
< div>
< img id= "img" src= "./assets/logo.png" alt= "" width= "300" height= "300" / >
转化为base64
< / div>
< / template>
< script setup lang= "ts" >
import useBase64 from './hook/tobase64'
useBase64 ( {
el: '#img' ,
} ) . then ( ( res) => {
console. log ( 'res' , res. Baseurl)
} )
< / script>
< style lang= "scss" >
html,
body,
#app {
height: 100 % ;
width: 100 % ;
overflow: hidden;
}
< / style>
Efecto
ruta de URL convertida a base64
Copie la ruta de la URL a la dirección URL del navegador, puede mostrar directamente la img base64 actual