<ImageField>

When you need to display an image based on a path contained in a record field, use the <ImageField /> component.

Usage

import { ImageField } from 'react-admin';

<ImageField source="url" title="title" />

// renders the record { id: 123, url: 'cat.png', title: 'meow' } as 
<div>
    <img src="cat.png" title="meow" />
</div>

You can also use <ImageField> on fields that contain an array of image objects:

<ImageField source="pictures" src="url" title="desc" />

// Renders the record
// {
//     id: 123,
//     pictures: [
//         { url: 'image1.jpg', desc: 'First image' },
//         { url: 'image2.jpg', desc: 'Second image' },
//     ]
// } as
<ul>
    <li><img src="image1.jpg" title="First image" /></li>
    <li><img src="image2.jpg" title="Second image" /></li>
</ul>

This field is also often used within the <ImageInput /> component to display a preview.

Props

Prop Required Type Default Description
src Optional string - A function returning a string (or an element) to display based on a record
title Optional string record.title The name of the property containing the image source if the value is an array of objects

<ImageField> also accepts the common field props.

src

If the record actually contains an array of images in the property defined by the source prop, the src prop will be needed to determine the src value of the images, for example:

// This is the record
{
    pictures: [
        { url: 'image1.jpg', desc: 'First image' },
        { url: 'image2.jpg', desc: 'Second image' },
    ]
}

<ImageField source="pictures" src="url" title="desc" />

title

The optional title prop points to the picture title property, used for both alt and title attributes. It can either be a hard-written string, or a path within your JSON object:

// { picture: { url: 'cover.jpg', title: 'Larry Cover (French pun intended)' } }

<ImageField source="picture.url" title="picture.title" />
// renders img title as "Larry Cover (French pun intended)"

<ImageField source="picture.url" title="Picture" />
// renders img title as "Picture", since "Picture" is not a path in previous given object

sx: CSS API

The <ImageField> component accepts the usual className prop. You can also override many styles of the inner components thanks to the sx property (see the sx documentation for syntax and examples). This property accepts the following subclasses:

Rule name Description
& .RaImageField-list Applied to the underlying <ul> component when sourceValue prop is an array
& .RaImageField-image Applied to each underlying <img> component

For instance, to specify a size for the image:

 <ImageField
    source="thumbnail"
    sx={{ '& img': { maxWidth: 50, maxHeight: 50, objectFit: 'contain' } }}
/>

To override the style of all instances of <ImageField> using the application-wide style overrides, use the RaImageField key.