Skip to content
On this page

useImage

Reactive load an image in the browser, you can wait the result to display it or show a fallback.

Demo

Category
Last Changed
last month
Loading...

Usage

<script setup>
import { useImage } from '@vueuse/core'

const avatarUrl = 'https://place.dog/300/200'
const { isLoading } = useImage({ src: avatarUrl })
</script>

<template>
  <span v-if="isLoading">Loading</span>
  <img v-else :src="avatarUrl">
</template>
<script setup>
import { useImage } from '@vueuse/core'

const avatarUrl = 'https://place.dog/300/200'
const { isLoading } = useImage({ src: avatarUrl })
</script>

<template>
  <span v-if="isLoading">Loading</span>
  <img v-else :src="avatarUrl">
</template>

Component Usage

This function also provides a renderless component version via the @vueuse/components package. Learn more about the usage.

<template>
  <UseImage src="https://place.dog/300/200">
    <template #loading>
      Loading..
    </template>

    <template #error>
      Failed
    </template>
  </UseImage>
</template>
<template>
  <UseImage src="https://place.dog/300/200">
    <template #loading>
      Loading..
    </template>

    <template #error>
      Failed
    </template>
  </UseImage>
</template>

Type Declarations

export interface UseImageOptions {
  /** Address of the resource */
  src: string
  /** Images to use in different situations, e.g., high-resolution displays, small monitors, etc. */
  srcset?: string
  /** Image sizes for different page layouts */
  sizes?: string
}
/**
 * Reactive load an image in the browser, you can wait the result to display it or show a fallback.
 *
 * @see https://vueuse.org/useImage
 * @param options Image attributes, as used in the <img> tag
 * @param asyncStateOptions
 */
export declare const useImage: <Shallow extends true>(
  options: MaybeComputedRef<UseImageOptions>,
  asyncStateOptions?: UseAsyncStateOptions<Shallow>
) => UseAsyncStateReturn<HTMLImageElement | undefined, true>
export declare type UseImageReturn = ReturnType<typeof useImage>
export interface UseImageOptions {
  /** Address of the resource */
  src: string
  /** Images to use in different situations, e.g., high-resolution displays, small monitors, etc. */
  srcset?: string
  /** Image sizes for different page layouts */
  sizes?: string
}
/**
 * Reactive load an image in the browser, you can wait the result to display it or show a fallback.
 *
 * @see https://vueuse.org/useImage
 * @param options Image attributes, as used in the <img> tag
 * @param asyncStateOptions
 */
export declare const useImage: <Shallow extends true>(
  options: MaybeComputedRef<UseImageOptions>,
  asyncStateOptions?: UseAsyncStateOptions<Shallow>
) => UseAsyncStateReturn<HTMLImageElement | undefined, true>
export declare type UseImageReturn = ReturnType<typeof useImage>

Source

SourceDemoDocs

Contributors

Jelf
Anthony Fu
Lúcio Rubens

Changelog

No recent changes

Released under the MIT License.