В зависимости от условия, хранящегося в состоянии компонента, я бы хотел, чтобы конкретный компонент, отображаемый при отображении, был обернут в тег Link
или в обычный тег div
(или ни один тег не работает так же хорошо!)
То, что я сейчас делаю, кажется многословным и лишним;Я чувствую, что есть более короткий способ, которым я мог бы написать этот компонент, чтобы сохранить мой код СУХИМЫМ.
Обе переменные, хранящие мои linkThumbnail
и defaultThumbnnail
компоненты, в значительной степени одинаковы, за исключением того факта, что один изони содержатся в компоненте Link
.
Затем я использую троичный оператор в операторе return
, чтобы получить нужный компонент.
Вот пример псевдокода:
import React, { Component } from "react";
import { Link } from "react-router-dom";
class ExampleComponent extends Component {
state = {
renderLink: false
};
render() {
const linkThumbnail = (
<Link
to={{
pathname: `/someMovieId`,
state: 'some-data'
}}
>
<div>
<div className='movie' onClick={this.getMoviePreview}>
<img
src={
poster
? `https://image.tmdb.org/t/p/w300${poster}`
: "https://via.placeholder.com/300"
}
alt='something here'
/>
</div>
</div>
</Link>
);
const defaultThumbnail = (
<div>
<div className='movie' onClick={this.getMoviePreview}>
<img
src={
poster
? `https://image.tmdb.org/t/p/w300${poster}`
: "https://via.placeholder.com/300"
}
alt='something here'
/>
</div>
</div>
);
//here I use a ternary operator to show the correct component...shorter method of doing this?
return this.state.renderLink ? linkThumbnail : defaultThumbnail;
}
}
export default ExampleComponent;