Эта страница в документации React рассказывает о различных вариантах условного рендеринга.
Где возможно, я предпочитаю выполнять условную часть перед выражением JSX, в которое я собираюсь встроить ее , но если вы хотите, чтобы он был встроен в это выражение, вы можете использовать условный оператор (описанный на этой странице здесь ) вместо создания и запуска функции временной стрелки:
{ this.state.nowPlaying && this.state.nowPlaying.id
? <div>
<div> Now Playing: { this.state.nowPlaying.name} </div>
<div> By: { this.state.nowPlaying.artist} </div>
<div> Id: { this.state.nowPlaying.id} </div>
<div> Progress: { this.state.nowPlaying.progress} </div>
<div>
<img src={ this.state.nowPlaying.image} style={{ width: 100}}/>
</div>
<AudioFeatures
id={this.state.nowPlaying.id}
ref={this.audioFeatures}
oAuth={this.state.oAuth}
/>
</div>
: <div>No Playback detected</div>
}
Но опять же, я бы сделал это до того выражения JSX, чтобы упростить вещи:
let nowPlaying;
if (this.state.nowPlaying && this.state.nowPlaying.id) {
newPlaying = <div>
<div> Now Playing: { this.state.nowPlaying.name} </div>
<div> By: { this.state.nowPlaying.artist} </div>
<div> Id: { this.state.nowPlaying.id} </div>
<div> Progress: { this.state.nowPlaying.progress} </div>
<div>
<img src={ this.state.nowPlaying.image} style={{ width: 100}}/>
</div>
<AudioFeatures
id={this.state.nowPlaying.id}
ref={this.audioFeatures}
oAuth={this.state.oAuth}
/>
</div>;
} else {
nowPlaying = <div>No Playback detected</div>;
}
затем в вашем выражении JSX:
{nowPlaying}