Я бы отбросил состояние, содержащее видимость изображения, в дочерний компонент. Этот компонент будет отвечать за 1 изображение, 1 кнопку и состояние этого изображения.
function ToggleableImage({ imageSrc }) {
const [isVisible, setVisibility] = React.useState(true);
function toggleVisibility() {
setVisibility(currentVisibility => !currentVisibility);
}
return (
<div>
<Button onClick={toggleVisibility} />
{isVisible && <img src={imageSrc} />}
</div>
);
}
Этот компонент принимает изображение, которое вы хотите отобразить в качестве реквизита. Он имеет состояние isVisibile
и функцию toggleVisibility
для обновления состояния, которое вызывается кнопкой.
Я использовал функциональные компоненты и React-хуки для состояния , но идея переноса состояния на дочерний компонент такая же.
Затем можно добавить несколько этих компонентов к родительскому.
function Images() {
return (
<div className="row">
<div className="col-sm-6">
<ToggleableImage imageSrc="https://via.placeholder.com/150" />
</div>
<div className="col-sm-6">
<ToggleableImage imageSrc="https://via.placeholder.com/150" />
</div>
</div>
);
}
Вы можно увидеть это работает здесь.