👀 See Sanity in action: Watch product demo now →

How Can I Use a Dynamic Name or Function to Change the Sanity Desk List Items?

7 replies
Last updated: May 10, 2021
How can I use a dynamic name or function to change what’s shown by the sanity desk list item for a document that only contains a reference? e.g. here, my
NavigationItem
just has a reference to a
Route
but I’d like it to display the slug of that route in the list (instead of
route: {empty}, children: […
- I’d rather not have to add another field for a label or name
May 10, 2021, 10:20 PM
You can add a preview to your navigation item schema and pull in the slug field from the route. It will probably look something like:

export default {
  name: 'navigationItem',
  title: 'Navigation Item',
  fields: [
    ...
  ],
  preview: {
    select: {
      title: 'route.slug.current',
    }
  }
}
May 10, 2021, 10:28 PM
You might want to include a prepare() function inside of preview to handle the title when there is no route selected (e.g., when a navigation item is first created).
May 10, 2021, 10:30 PM
awesome thanks
user A
May 10, 2021, 10:35 PM
I probably should read the documentation at some stage huh
May 10, 2021, 10:36 PM
There’s lots to read! There’s a great community of people here always willing to help.
May 10, 2021, 10:37 PM
Yeah I’m getting through it bit by bit 😉
May 10, 2021, 10:38 PM
Posting just for anyone else’s reference but that was easy thanks
user A


preview: {
    select: {
      title: 'route.slug.current',
    },
    prepare({ title }) {
      return {
        title: title ? `/${title}` : 'No route selected',
      };
    },
  },
May 10, 2021, 10:50 PM

Sanity.io – build remarkable experiences at scale

Sanity is a customizable solution that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.