import { FC, useRef, useState } from 'react';
import './TrelloBoardColor.scss';
type Color = {
name: string;
value: string;
};
type Props = {
color: Color;
};
const TrelloBoardColor: FC<Props> = ({ color }) => {
const [isColorClicked, setIsColorClicked] = useState(false);
const trelloBoardColorRef = useRef<HTMLDivElement>(null);
const handleColorClick = () => {
// при первом клике здесь становится значение в true
// в инструментах разработчика я вижу класс 'trello-board-color_clicked' у элемента
setIsColorClicked(!isColorClicked);
// а тут выводится элемент только с классом 'trello-board-color'
console.log(trelloBoardColorRef.current);
// и тут значение false хотя класс 'trello-board-color_clicked' добавляется когда isColorClicked == true
console.log(`handleColorClick(isColorClicked): ${isColorClicked}`);
};
return (
<div
ref={trelloBoardColorRef}
className={`trello-board-color ${isColorClicked ? 'trello-board-color_clicked' : ''}`}
style={{ backgroundColor: `${color.value}` }}
onClick={handleColorClick}></div>
);
};
export default TrelloBoardColor;
и при последующих кликах значения в консоли выводятся наоборот. почему?
у меня несколько таких квадратов с цветами. нужно чтобы по клику можно было выбрать только один (и он стал отмечен галочкой) и другие при этом на клик не реагировали. я так понимаю переменная из стейта (isColorClicked) тут не подходит. как мне тогда сделать эти "флаги", рефы использовать?