Извините за ужасный заголовок, я не мог на всю жизнь понять, как сформулировать эту проблему. По умолчанию я хочу, чтобы первый элемент в моем списке был выделен, а остальные элементы были выделены, когда курсор мыши над ними. Это прекрасно работает, и мне было любопытно, как я могу удалить выделение этого начального элемента, когда другой выделен, я знаю, что мне нужно обработать состояние в моем родительском компоненте (List), но я не могу понять это.
Это мой элемент списка, который содержит некоторое базовое c управление состоянием, чтобы показать, выделен ли данный элемент или нет.
export default function Item ({ title, onClick, selected, i }) {
const [highlight, setHighlight] = useState(false)
return (
<ListItem
i={i}
key={title}
selected={selected}
onClick={onClick}
onMouseEnter={() => setHighlight(true)}
onMouseLeave={() => setHighlight(false)}
// i === 0 && no other item is highlighted (need to get this state from the list component)
highlight={highlight || i === 0}
>
{title}
</ListItem>
)
}
Родительский компонент, который принимает «список» и отображает каждый элемент в этот список к вышеуказанному компоненту (Item):
export default function List ({ list, onClick, selected, render }) {s
return (
<div>
{render ? (
<ListContainer>
{list.map((item, i) => (
<Item
i={i}
key={item.title}
title={item.title}
onClick={() => onClick(item.title)}
selected={selected(item.title)}
/>
))}
</ListContainer>
) : null}
</div>
)
}
Вот ссылка Gyazo , которая показывает текущую реализацию, чего я хочу добиться, чтобы этот начальный элемент больше не был подсвечивается, когда мышкой введен другой элемент, индекс которого не равен 0.