// utility hook
function useMouseOver() {
const [mouseOver, setMouseOver] = useState(false);
return {
mouseOver,
triggers: {
onMouseEnter: () => setMouseOver(true),
onMouseLeave: () => setMouseOver(false),
},
};
}
// mark component
function CommentHighlight({ attributes, children, ...props }) {
const { mouseOver, triggers } = useMouseOver();
return (
<span
{...attributes}
{...triggers}
style={{
background: mouseOver ? yellow[600] : yellow[200],
cursor: 'pointer',
}}
>
{children}
</span>
);
}
Представьте себе 2 перекрывающихся комментария, они имеют разные отметки, но отображаются с одним и тем же компонентом CommentHighlight
:
-----
---------
aaaccbbbbbbb
a
- имеет отметку из комментария 1 b
- имеет оценку из комментария 2 c
- имеет оценку из комментариев 1 и 2
Когда я наведите курсор мыши на aaa
Мне нужно cc
изменить цвет тоже.Но как?
Единственное, что я могу предположить, - это отслеживать состояние выделения в редуксе (или аналогичном) и обновлять каждый компонент комментария при изменении состояния.Но это похоже на излишество.