首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React:呈现函数中的条件语句

React:呈现函数中的条件语句
EN

Stack Overflow用户
提问于 2016-11-30 15:26:09
回答 3查看 4.2K关注 0票数 3

我有一系列不同艺术家的物品。我希望根据图像是否在单个对象中显示不同的内容。

我试图在render方法中添加一个if/else语句,但这当然不起作用。请看下面的代码。

代码语言:javascript
复制
render: function() {
    var cardList = this.props.artists.map(function(artist, index){
        return(
          <li key={index} className='card'>
            <span>  
                {if artist.image}
                   <img src="{artist.image}">
                {else}
                <p>{artist.message}</p>
                  <p>LIKES <i className="fa fa-heart" aria-hidden="true"></i> {artist.likeCount }</p>
              </span>
          </li>
        )
    })
    return (
      <div className='tickerwrapper'>
        <ul className='list'>{cardList}</ul>
      </div>
    )
  }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-30 15:30:29

您可以按照以下内容内联:

代码语言:javascript
复制
{ myVal === true ? <div>True</div> : <div>False</div> }

例如,如果您只希望在myVal为真的情况下呈现某项内容,则如果它为false,则可以返回null:

代码语言:javascript
复制
 { myVal === true ? <div>True</div> : null }

如果逻辑相当大,只需将其解压缩到函数中,并从您的呈现中调用它:

代码语言:javascript
复制
renderSalutation() {
  return (userLoggedOn ? <h3>Hello!</h3> : null);
}

render() {
  return (
    <div>
      { this.renderSalutation() }

      ------other renderings here

    </div>  
  );
}
票数 1
EN

Stack Overflow用户

发布于 2016-11-30 15:29:45

您需要在JSX代码中使用有效的表达式。如果-否则语句不是,但是可以使用三元操作符:

代码语言:javascript
复制
var cardList = this.props.artists.map(function(artist, index) {
    return(
        <li key={index} className='card'>
            <span>  
                {artist.image ? (
                    <img src="{artist.image}">
                ) : (
                    <p>{artist.message}</p>
                    <p>LIKES <i className="fa fa-heart" aria-hidden="true"></i> {artist.likeCount}</p>
                )}
            </span>
        </li>
    )
})

您可以找到关于条件呈现在反应文档中的更多信息。

票数 0
EN

Stack Overflow用户

发布于 2016-11-30 15:40:00

这可以用if/else来完成。如在React站点上所示:

代码语言:javascript
复制
function NumberDescriber(props) {
  let description;

  if (props.number % 2 == 0) {
    description = <strong>even</strong>;
  } else {
    description = <i>odd</i>;
  }
  return <div>{props.number} is an {description} number</div>;
}

只需在您的渲染功能中执行类似的操作。有条件地将值设置为所需的组件,然后在{}中呈现它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40892101

复制
相关文章

相似问题

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