Я использую Gatsby для статического веб-сайта.
Моя страница состоит из двух частей. Раздел 1 и раздел 2. Я хочу скрыть изображение в разделе 1, когда кнопка находится в разделе 2.
Если я немного подчищу свой .js, он будет выглядеть так:
<section>
<SomeText/>
<DefaultImage />
<ImageOne />
<ImageTwo />
</section>
<section>
<Button1/>
<Button2/>
</section>
Чего я хочу добиться: по умолчанию отображается <DefaultImage/>
. Если я наведу курсор на <Button1>
, я хочу скрыть <DefaultImage/>
и вместо этого отобразить <ImageOne/>
.
То же самое касается <Button2/>
, который при наведении должен скрывать <DefaultImage/>
и отображать <ImageTwo/>
.
Я читал о onMouseEnter и onMouseLeave и думаю, что ответ лежит там, но пока не могу заставить его работать.
Спасибо за ваши идеи!
Может быть, я также могу передать опору (например, класс css) для компонента «чтобы быть скрытым», когда другой зависает
Мне удалось это сделать (проверьте принятый ответ). Вот мой отредактированный код:
class Parent extends Component {
state = {
isHoveringImage1: false
}
state = {
isNotHovering: false
}
state = {
isHoveringImage2: false
}
startHoverMasque = () => this.setState({ isHoveringMasque: true, isNotHovering: true})
stopHoverMasque = () => this.setState({ isHoveringMasque: false, isNotHovering: false })
startHoverMains = () => this.setState({ isHoveringMains: true, isNotHovering: true})
stopHoverMains = () => this.setState({ isHoveringMains: false, isNotHovering: false })
render() {
return (
<>
<Global
styles={globalStyles}/>
<section>
{
this.state.isNotHovering
? <ImageDefaultHidden />
: <ImageDefault/>
}
{
this.state.isHoveringImage1
? <Image1 />
: <ImageDefaultHidden />
}
{
this.state.isHoveringImage2
? <Image2 />
: <ImageDefaultHidden />
}
</section>
<section>
<Button1
onMouseEnter={ this.startHoverImage1}
onMouseLeave={ this.stopHoverImage1 }
>Bouton1</Button1>
<Button2
onMouseEnter={ this.startHoverImage2}
onMouseLeave={ this.stopHoverImage2 }
>Bouton 2</Button2>
</section>
</>
)
}
}
export default Parent```