<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.
