Search code examples
reactjsconditional-statementsconditional-rendering

React Conditional Rendering


I'm trying to figure out conditional rendering in React. If there are no movies in the user's watchlist, i just want to output a title. I thought somethin like this would work:

render() {
    return (
        <Container>
            {this.state.watchlist.map(item => {
                if(this.state.watchlist.length > 0) {
                    return (
                        <WatchlistMovie
                            className="watchlist-movie"
                            key={item.id}
                            id={item.id}
                            title={item.title}
                            poster={item.poster}
                            overview={item.overview}
                            rating={item.rating}
                            user={this.props.user}
                        />
                    );
                } else {
                    return <h1>no movies</h1>
                }
            )}}
        </Container>
    );
}

Solution

  • I believe you want the if-else logic outsides of the map

      <Container>
        {this.state.watchlist.length === 0 && <h1>no movies</h1>}
    
        {this.state.watchlist.map(item => (<WatchlistMovie
          className="watchlist-movie"
          key={item.id}
          id={item.id}
          title={item.title}
          poster={item.poster}
          overview={item.overview}
          rating={item.rating}
          user={this.props.user}
        />))}
    
      </Container>