首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在render函数中使用if语句?

如何在render函数中使用if语句?
EN

Stack Overflow用户
提问于 2018-06-18 15:37:59
回答 4查看 57关注 0票数 1

下面是我的渲染方法。我只想在toptracks不是null的情况下遍历它。但是我不能让它工作。

代码语言:javascript
复制
render() {
   console.log('galler props',this.props);

    const { toptracks } = this.props;
    return (
       <div>
        if(this.props.toptracks !== null){

        {toptracks.map((toptracks,k) => {
          const trackImg =toptracks.track[0].image[0]['#text'];
          return (
              <div
                  key = {k}
                  className ="track"
                  >
                  <img
                     src={trackImg}
                     className="trackImg"
                     alt="track"
                     />
                     <p className="tracl-text">
                               {track.name}
                         </p>
                         </div>      

                             )
                         }
                       ) 
                     }
         }

         </div>
    ) 
}
EN

回答 4

Stack Overflow用户

发布于 2018-06-18 15:41:37

在render-return语句中不能有if语句。您可以使用像这样的三元语句

代码语言:javascript
复制
render() {
        const { toptracks } = this.props;
        return (
           <div>

            {this.props.toptracks ? toptracks.map((toptracks,k) => {
              const trackImg =toptracks.track[0].image[0]['#text'];
              return (
                  <div key = {k} className ="track">
                      <img
                         src={trackImg}
                         className="trackImg"
                         alt="track"
                      />
                       <p className="tracl-text">
                           {track.name}
                       </p>
                   </div>      
                )
              }) : null}
             </div>
        ) 
    }
票数 1
EN

Stack Overflow用户

发布于 2018-06-18 15:58:47

如果你决定提前退货,使用if是相当简单的:

代码语言:javascript
复制
render() {
   const { toptracks } = this.props;

   if (!toptracks) { // this will handle both null and undefined
      return <div/>;
   }

   return (
      ...
   );
}

然而,有更简单的方法可以做到这一点。请注意,在您的示例中,没有值与具有空值是相同的。那么为什么不默认为空值呢?

代码语言:javascript
复制
render() {
   const toptracks = this.props.toptracks || [];

   // no change needed here
}

可以通过为组件定义defaultProps来完成相同的操作。

代码语言:javascript
复制
static defaultProps = {
   toptracks: []
};
票数 1
EN

Stack Overflow用户

发布于 2018-06-18 15:57:34

如果您将其作为功能组件,则可以添加if,并在其中添加if语句。

代码语言:javascript
复制
ShowTopTracks = () =>{
    if(this.props.toptracks){
        return toptracks.map((toptracks,k) => {
            const trackImg =toptracks.track[0].image[0]['#text'];
            return (
              <div
                  key = {k}
                  className ="track"
                  >
                  <img
                     src={trackImg}
                     className="trackImg"
                     alt="track"
                     />
                  <p className="tracl-text">
                     {track.name}
                  </p>
              </div>      
            )
        }) 
    }
    else return null;
}


render() {
   console.log('galler props',this.props);

    const { toptracks } = this.props;
    return (
       <div>
       {this.ShowTopTracks()}
       </div>
    ) 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50904689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档