В библиотеке MUI (Material-UI) чипы
(Chip) используются для отображения компактных элементов
интерфейса, представляющих данные, действия или теги. Они могут быть
интерактивными, позволяя пользователю выполнять действия, например,
удалять элементы или переходить по ссылкам. Две ключевые интерактивные
возможности чипов — удаление (deletable) и
клики (clickable) — реализуются через свойства
компонента Chip.
deletableНа самом деле в MUI нет прямого свойства deletable, но
возможность удаления реализуется через комбинацию иконки
удаления (deleteIcon) и обработчика
события (onDelete).
Пример базового удаляемого чипа:
import React from 'react';
import Chip from '@mui/material/Chip';
function DeletableChip() {
const handleDelete = () => {
console.log('Чип удалён');
};
return (
);
}
export default DeletableChip;
Пояснения:
onDelete — функция, которая вызывается при нажатии на
иконку удаления.deleteIcon: }
/>
Стилизация удаления:
MUI позволяет кастомизировать внешний вид иконки и чипа через
sx или styled:
clickableЧипы могут реагировать на клики, превращаясь в мини-кнопки. Для этого
используется свойство clickable и обработчик
onClick.
Пример кликабельного чипа:
console.log('Чип кликнут')}
/>
Особенности кликабельных чипов:
pointer). console.log('Чип кликнут')}
onDel ete={() => console.log('Чип удалён')}
/>
clickable и deletableЧасто требуется чип, который и реагирует на клик, и позволяет удалять элемент. В этом случае:
clickable делает весь чип интерактивным.onDelete добавляет иконку удаления, которая не вызывает
onClick.Важно помнить, что события разделяются: клик по иконке удаления не
вызывает onClick.
console.log('Чип кликнут')}
onDel ete={() => console.log('Удалён')}
color="primary"
/>
Цвета и вариант:
color —
default | primary | secondary | error | info | success | warningvariant — filled | outlined {}}
color="success"
variant="outlined"
/>
Стилизация через sx:
{}}
sx={{
bgcolor: 'lightgreen',
color: 'darkgreen',
'&:hover': { bgcolor: 'green', color: 'white' },
'& .MuiChip-deleteIcon': { color: 'darkred' }
}}
/>
Использование с аватаром:
Чипы можно сочетать с аватаром, чтобы обозначить владельца или тип тега:
import Avatar from '@mui/material/Avatar';
}
label="Чип с аватаром"
clickable
onDel ete={() => console.log('Удалён')}
color="secondary"
/>
Частый сценарий — список тегов, которые можно удалять:
import React, { useState } from 'react';
import Chip from '@mui/material/Chip';
import Stack from '@mui/material/Stack';
function ChipList() {
const [tags, setTags] = useState(['React', 'MUI', 'JavaScript']);
const handleDelete = (tagToDelete) => {
setTags(tags.filter(tag => tag !== tagToDelete));
};
return (
{tags.map(tag => (
handleDelete(tag)}
/>
))}
);
}
export default ChipList;
Особенности:
key.handleDelete изменяет состояние родительского
компонента, удаляя выбранный элемент.clickable, чтобы клики по чипу
выполняли дополнительные действия.onDelete делает чип удаляемым; иконка
удаления появляется автоматически.clickable делает чип кликабельным и
добавляет визуальный эффект наведения.sx, color,
variant, avatar, deleteIcon
позволяет гибко подстраивать компонент под дизайн приложения.