React List - Customize Item Appearance
For a minor customization of List items, you can define specific fields in item data objects. For example, the following code generates three items: each item has a badge, the second is disabled and the third is hidden.
jQuery
JavaScript
const fruits = [ { text: "Apples", badge: 10 }, { text: "Oranges", badge: 12, disabled: true }, { text: "Lemons", badge: 15, visible: false } ]; $(function() { $("#listContainer").dxList({ dataSource: fruits }); });
Angular
TypeScript
HTML
import { DxListModule } from "devextreme-angular"; // ... export class AppComponent { fruits = [ { text: "Apples", badge: 10 }, { text: "Oranges", badge: 12, disabled: true }, { text: "Lemons", badge: 15, visible: false } ]; } @NgModule({ imports: [ // ... DxListModule ], // ... })
<dx-list [dataSource]="fruits"> </dx-list>
Vue
App.vue
<template> <DxList :data-source="fruits" /> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxList from 'devextreme-vue/list'; const fruits = [ { text: "Apples", badge: 10 }, { text: "Oranges", badge: 12, disabled: true }, { text: "Lemons", badge: 15, visible: false } ]; export default { components: { DxList }, data() { return { fruits } } } </script>
React
App.js
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import List from 'devextreme-react/list'; const fruits = [ { text: "Apples", badge: 10 }, { text: "Oranges", badge: 12, disabled: true }, { text: "Lemons", badge: 15, visible: false } ]; export default function App() { return ( <List dataSource={fruits} /> ); }
If you need a more flexible solution, define an itemTemplate.
jQuery
JavaScript
const fruits = [ { name: "Apples", count: 10 }, { name: "Oranges", count: 12 }, { name: "Lemons", count: 15 }, { name: "Pears", count: 20 }, { name: "Pineapples", count: 3 } ]; $(function() { $("#listContainer").dxList({ dataSource: fruits, itemTemplate: function(data, _, element) { element.append( $("<b>").text(data.fruit), $("<br />"), $("<p>").text(data.count).css("margin", 0) ) } }); });
Angular
HTML
TypeScript
<dx-list [dataSource]="fruits" itemTemplate="listItem"> <div *dxTemplate="let item of 'listItem'"> <b>{{item.name}}</b><br /> <p style="margin:0px">{{item.count}}</p> </div> </dx-list>
import { DxListModule } from "devextreme-angular"; // ... export class AppComponent { fruits = [ { name: "Apples", count: 10 }, { name: "Oranges", count: 12 }, { name: "Lemons", count: 15 }, { name: "Pears", count: 20 }, { name: "Pineapples", count: 3 } ]; } @NgModule({ imports: [ // ... DxListModule ], // ... })
Vue
App.vue
<template> <DxList :data-source="fruits" item-template="list-item"> <template #list-item="{ data }"> <div> <b>{{ data.name }}</b> <br /> <p style="margin:0px">{{ data.count }}</p> </div> </template> </DxList> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxList from 'devextreme-vue/list'; const fruits = [ { name: "Apples", count: 10 }, { name: "Oranges", count: 12 }, { name: "Lemons", count: 15 }, { name: "Pears", count: 20 }, { name: "Pineapples", count: 3 } ]; export default { components: { DxList }, data() { return { fruits } } } </script>
React
App.js
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import List from 'devextreme-react/list'; const fruits = [ { name: "Apples", count: 10 }, { name: "Oranges", count: 12 }, { name: "Lemons", count: 15 }, { name: "Pears", count: 20 }, { name: "Pineapples", count: 3 } ]; const ListItem = (data) => { return ( <div> <b>{ data.name }</b> <br /> <p style={{ margin: '0px' }}>{ data.count }</p> </div> ); }; export default function App() { return ( <List dataSource={fruits} itemRender={ListItem} /> ); }
jQuery
You can also customize an individual List item. For this purpose, declare a template for this item as a script and pass its id
to the template field.
HTML
JavaScript
<script id="individualTemplate" type="text/html"> <!-- ... --> </script>
const fruits = [ { name: "Apples", count: 10 }, { name: "Oranges", count: 12, template: $("#individualTemplate") }, // ... ];
Built-In Template Engine Demo 3rd-Party Template Engine Demo
See Also
Feel free to share topic-related thoughts here.
If you have technical questions, please create a support ticket in the DevExpress Support Center.
Thank you for the feedback!
If you have technical questions, please create a support ticket in the DevExpress Support Center.