React Tabs - Customize Item Appearance
For a minor customization of tabs, you can define specific fields in item data objects. For example, the following code generates three tabs: the first has an icon, the second has a badge, the third is disabled.
jQuery
$(function() { $("#tabsContainer").dxTabs({ items: [ { text: "User", icon: 'user' }, { text: "Comment", badge: "New" }, { text: "Find", disabled: true } ] }); });
Angular
<dx-tabs [items]="tabs"> </dx-tabs>
import { DxTabsModule } from "devextreme-angular"; // ... export class AppComponent { tabs = [ { text: "User", icon: 'user' }, { text: "Comment", badge: "New" }, { text: "Find", disabled: true } ]; } @NgModule({ imports: [ // ... DxTabsModule ], // ... })
Vue
<template> <DxTabs :items="tabs" /> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxTabs from "devextreme-vue/tabs"; export default { components: { DxTabs }, data() { return { tabs: [ { text: "User", icon: 'user' }, { text: "Comment", badge: "New" }, { text: "Find", disabled: true } ] }; } }; </script>
React
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import { Tabs } from 'devextreme-react/tabs'; const tabs = [ { text: "User", icon: 'user' }, { text: "Comment", badge: "New" }, { text: "Find", disabled: true } ]; class App extends React.Component { render() { return ( <Tabs items={tabs} /> ); } } export default App;
If you need a more flexible solution, define an itemTemplate.
jQuery
$(function() { $("#tabsContainer").dxTabs({ items: [ { text: "User" }, { text: "Comment" }, { text: "Find" } ], itemTemplate: function (itemData, itemIndex, itemElement) { itemElement.append("<p style='color:#6600cc;'>" + itemData.text + "</p>"); } }); });
Angular
<dx-tabs [items]="tabs" itemTemplate="tabItem"> <div *dxTemplate="let itemData of 'tabItem'"> <p style="color:#6600cc;">{{itemData.text}}</p> </div> </dx-tabs>
import { DxTabsModule } from "devextreme-angular"; // ... export class AppComponent { tabs = [ { text: "User" }, { text: "Comment" }, { text: "Find" } ]; } @NgModule({ imports: [ // ... DxTabsModule ], // ... })
Vue
<template> <DxTabs :items="tabs" item-template="item"> <template #item="{ data }"> <p style="color: #6600cc;">{{data.text}}</p> </template> </DxTabs> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxTabs from "devextreme-vue/tabs"; export default { components: { DxTabs }, data() { return { tabs: [ { text: "User" }, { text: "Comment" }, { text: "Find" } ] }; } }; </script>
React
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import { Tabs } from 'devextreme-react/tabs'; const tabs = [ { text: "User" }, { text: "Comment" }, { text: "Find" } ]; const renderTabItem = (itemData) => { return ( <p style={{color: '#6600cc'}}>{itemData.text}</p> ); } class App extends React.Component { render() { return ( <Tabs items={tabs} itemRender={renderTabItem} /> ); } } export default App;
jQuery
You can also customize individual tabs. Declare them as scripts and reference them in the template property or assign a customization function straight to this property.
<div id="tabsContainer"></div> <script id="individualTabTemplate" type="text/html"> <span>Comment</span> </script>
$(function() { $("#tabsContainer").dxTabs({ items: [{ template: function() { return $("<span>").text("User"); } }, { template: $("#individualTabTemplate") }] }); });
Angular
You can also customize individual tabs. Declare them using the dxItem component.
<dx-tabs> <dxi-item> <span>User</span> </dxi-item> <dxi-item> <span>Comment</span> </dxi-item> </dx-tabs>
import { DxTabsModule } from "devextreme-angular"; // ... export class AppComponent { // ... } @NgModule({ imports: [ // ... DxTabsModule ], // ... })
Vue
You can also customize individual tabs. Declare them using the dxItem component.
<template> <DxTabs> <DxItem> <template #default> <span>User</span> </template> </DxItem> <DxItem> <template #default> <span>Comment</span> </template> </DxItem> </DxTabs> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxTabs, { DxItem } from "devextreme-vue/tabs"; export default { components: { DxTabs, DxItem } }; </script>
React
You can also customize individual tabs. Declare them using the dxItem component.
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import { Tabs, Item } from 'devextreme-react/tabs'; class App extends React.Component { render() { return ( <Tabs> <Item> <span>User</span> </Item> <Item> <span>Comment</span> </Item> </Tabs> ); } } export default App;
See Also
If you have technical questions, please create a support ticket in the DevExpress Support Center.