Объединить два реакт файла в один
у меня два файла которые возвращают фрагменты html. Они идентичны за исключением изображения. Дело в том, что сервер на изображение плейлиста и изображение жанра имеет разные пути.
props.items.images[0].url
и
props.items.icons[0].url
из-за этого мне пришлось разносить этот код по двум разным файлам. Как бы я мог их объединить в один?
const Playlist = props => {
const playListClick = e => {
props.onClick(e.target.title);
}
return (
<section id={props.selectedValue} className="collum collum__hidden" onClick={playListClick}>
<a className="link__decoration link__track hover__track link__one" href="#">
<div>
{props.items.map((item, idx) =>
<div className="container" key={idx + 1} title={item.id} >
<div className="content__track" title={item.id}>
<img className="img__tarck" title={item.id} src={item.images[0].url}/>
<div className="name" title={item.id}>{item.name}</div>
</div>
</div>)}
</div>
</a>
</section>
);
}
const Genre = props => {
const genreClick = e => {
props.onClick(e.target.title);
}
return (
<section id={props.selectedValue} className="collum collum__hidden" onClick={genreClick}>
<a className="link__decoration link__track hover__track link__one" href="#">
<div>
{props.items.map((item, idx) =>
<div className="container" key={idx + 1} title={item.id}>
<div className="content__track" title={item.id}>
<img className="img__tarck" title={item.id} src={item.icons[0].url}/>
<div className="name" title={item.id}>{item.name}</div>
</div>
</div>)}
</div>
</a>
</section>
);
}
Ответы (1 шт):
Автор решения: EzioMercer
→ Ссылка
Можно просто пробросить какой-то переключатель (например isPlaylist) и смотреть на его значение:
const GenreAndPlaylist = props => {
const genreClick = e => {
props.onClick(e.target.title);
}
return (
<section id={props.selectedValue} className="collum collum__hidden" onClick={genreClick}>
<a className="link__decoration link__track hover__track link__one" href="#">
<div>
{props.items.map((item, idx) =>
<div className="container" key={idx + 1} title={item.id}>
<div className="content__track" title={item.id}>
<img className="img__tarck" title={item.id} src={item.[props.isPlaylist ? 'images' : 'icons'][0].url}/>
<div className="name" title={item.id}>{item.name}</div>
</div>
</div>
)}
</div>
</a>
</section>
);