Я пытаюсь добавить className к первому div массива, который я отображаю в React. Я новичок в реакции, поэтому синтаксис меня ставит в тупик.
Вот мое исходное состояние:
export default class EventList extends Component {
state = {
users: [],
events: [],
shownForm: null,
hideNewForm: true,
hideEditForm: true,
currentUserId: this.props.getCurrentUser(),
editTitle: "",
editDate: "",
editSynopsis: "",
editLocation: "",
editId: ""
}
Это неработающая функция, но как я пытаюсь использовать условный оператор для массива:
addFirstClass =() => {
if (this.state.events === this.state.events[0]){
className = "card-body details"
}else{
className = "card-body details coral"
}
}
Вот где я визуализирую div в DOM:
render() {
return(
<section className = "events">
{this.state.events.map(event => (
<div key = {event.id} className = "card">
<div className = {this.addFirstClass()}>
<p className = "card-details">
Synopsis:{event.synopsis}</p>
</div>
</div>
</section>
)
}
Я искал другие темы, но, похоже, не могу понять, как это сделать. Любая помощь приветствуется!





Вы можете использовать динамическое имя класса, я надеюсь, что эта работа
<section className = "events">
{this.state.events.map(event => (
<div key = {event.id} className = {this.state.events[0].id === event.id ? 'card-body details' : 'card-body details coral'}>
<div className = {this.addFirstClass()}>
<p className = "card-details">
Synopsis:{event.synopsis}</p>
</div>
</div>
</section>
<div key = {event.id} className = {this.state.events[0].id === event.id ? 'card-body details' : 'card-body details coral'}>
Здесь я использую сокращение JavaScript, если, чтобы проверить, соответствует ли this.state.events[0].id текущему event.id, добавьте эти классы, иначе добавьте другие классы
Попробуйте это (используйте встроенный счетчик на карте и спросите, равен ли счетчик 0 ... иначе ...):
<section className = "events">
{this.state.events.map((event, i) => (
<div key = {event.id} className = {i===0 ? 'card-body details' : 'card-body details coral'}>
<div className = {this.addFirstClass()}>
<p className = "card-details">
Synopsis:{event.synopsis}</p>
</div>
</div>
</section>
Или что-то вроде противоположного и чуть более плавного:
<section className = "events">
{this.state.events.map((event, i) => (
<div key = {event.id} className = {'card-body details' + (i !== 0 ? ' coral' : '')}>
<div className = {this.addFirstClass()}>
<p className = "card-details">
Synopsis:{event.synopsis}</p>
</div>
</div>
</section>
Блестяще! Это мне очень помогло! Я надеюсь, что когда-нибудь научусь лучше обдумывать синтаксис. Большое спасибо!