Добавьте state
к компоненту CollectionList
, сохраняя имя выбранного Collection
:
const CollectionList = props => {
const [selected, setSelected] = useState(null);
return (
// ...
)
}
Передайте реквизиты selected
и setSelected
всем вашим Collection
component:
<Collection
name="All Questions"
description="All questions (technical & behavioral)"
numQuestions="400"
selected={selected}
setSelected={setSelected}
/>
Добавьте метод onClick
к внешнему div
вашего Collection
компонента, который устанавливает значение состояния selected
равным name
текущего Collection
:
<div
className="collection"
onClick={() => this.props.setSelected(this.props.name)}
>
// ...
</div>
Проверьте, совпадает ли selected
реквизит с текущей коллекцией name
в вашем Collection
компоненте. Если true, отобразите selected badge
:
{this.props.selected === this.props.name && (
<span className="collection-selected-badge">SELECTED</span>
)}
Вот пример кодов и коробки , хотя и не такой красивый, как у предоставленного вами изображения.