Чтобы реализовать функционал, при котором при нажатии на кнопку меняется её класс, а также сохраняется стиль ранее нажатой кнопки, вы можете использовать состояние для хранения текущей нажатой кнопки. Ниже представлю обновленный пример с пояснениями.
Для этого:
1. Сохраняйте ID нажатой кнопки в состоянии.
2. При рендере кнопки проверяйте, является ли её ID текущей нажатой кнопкой, и задавайте соответствующий класс.
Вот пример кода на React:
```javascript
import React, { useState } from 'react';
const ButtonGroup = ({ todo }) => {
const [activeId, setActiveId] = useState(null);
const [icon, setIcon] = useState(false);
const handleButtonClick = (id) => {
// Если нажата уже активная кнопка, просто переключаем иконку
if (id === activeId) {
setIcon(!icon);
} else {
// Сохраняем ID новой кнопки и меняем иконку
setActiveId(id);
setIcon(true); // Или false, в зависимости от вашей логики
}
};
return (
<div>
{todo.map(item => {
const isActive = activeId === item[0]; // Определяем, активная ли кнопка
const btnIcon = isActive ? (icon ? 'icon-pause' : 'icon-play') : 'icon-default'; // Ваш класс по умолчанию
return (
<button
key={item[0]}
className={`icon ${btnIcon}`}
onClick={() => handleButtonClick(item[0])}
>
{/* Содержимое кнопки можно задавать здесь */}
{item[1]}
</button>
);
})}
</div>
);
};
export default ButtonGroup;
```
### Что здесь происходит:
1. **Состояние `activeId`:** Хранит ID активной кнопки. Когда кнопка нажата, ее ID присваивается `activeId`.
2. **Состояние `icon`:** Используется для хранения состояния иконки (пауза или воспроизведение).
3. **`handleButtonClick`:** Функция обрабатывает нажатие на кнопку. Если нажата уже активная кнопка, просто переключает состояние `icon`. Если нажата новая кнопка, она становится активной, а `icon` устанавливается на true (или false в зависимости от вашей логики).
4. **Рендер кнопок:** При рендеринге кнопок мы проверяем, является ли кнопка активной (по ID), чтобы задать ей нужный класс.
Теперь, при нажатии на любую кнопку, она будет получать свой класс в зависимости от состояния, и при повторном нажатии на ту же кнопку будет происходить переключение иконки.