Попробуйте использовать CSS вместо JS для отображения различных изображений в зависимости от ширины экрана.
<Header class="Header">
<img src="./images/small.png" className="small-screen-logo" alt="logo"/>
<img src="./images/regular.png" className="large-screen-logo" alt="logo"/>
</Header>
Отображение небольшого экрана lo go, если Размер экрана превышает 768 пикселей. Экран большего размера lo go
.small-screen-logo {
display: block;
}
.large-screen-logo {
display: none;
}
@media (min-width: 768px) {
.small-screen-logo {
display: none;
}
.large-screen-logo {
display: block;
}
}
Если вы используете bootstrap, вы можете достичь этого с помощью bootstrap классов:
<Header class="Header">
<img src="./images/small.png" className="d-block d-md-none" alt="logo"/>
<img src="./images/regular.png" className="d-none d-md-block" alt="logo"/>
</Header>
Рекомендуемое чтение https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Media_queries
Если вы хотите использовать JS, вы можете добавить метод logo
вместо changeLogo(logo)
.
logo() {
return './images/' + (this.state.winWidth < 768 ? 'small.png' : 'regular.png') + '.png';
}
Затем используйте его для рендеринга следующим образом:
<img src={logo} alt="logo"/>