【问题标题】:How do I conditionally include a tag in the middle of some HTML in React如何在 React 的一些 HTML 中间有条件地包含一个标签
【发布时间】:2015-01-17 21:40:21
【问题描述】:

我有一个Avatar React 组件,并且可以选择是否将其链接到个人资料。例如,如果您在用户个人资料上,您可能不希望它链接到个人资料,而是您想要自定义clickHandler。除了在链接之外的每个 if 和 else 中使用基本相同的 HTML 来执行 if/else 之外,还有更好的方法吗?下面是一些伪渲染代码,只是为了说明我的意思:

 <div className={"Avatar Avatar--" + this.props.size} onClick={this.props.clickHandler}>
    {if (this.props.link) { 
      <Link to="profile" params={{userId:this.props.user.id}}>
     }
    }

      <img className="__avatarimage" src={this.props.user.avatar} />

    {if (this.props.link) {
      </Link> 
     }
    }
  </div>

【问题讨论】:

    标签: javascript syntax reactjs react-jsx


    【解决方案1】:

    用途:

    <div className={"Avatar Avatar--" + this.props.size} onClick={this.props.clickHandler}>
    { this.props.link ?
      <Link to="profile" params={{userId:this.props.user.id}}>
        <img className="__avatarimage" src={this.props.user.avatar} />
      </Link>
      : <img className="__avatarimage" src={this.props.user.avatar} /> }
    

    您可以尝试通过提前定义 img 来消除双重定义:

    var img = <img className="__avatarimage" src={this.props.user.avatar} />;
    

    并使用以下方法嵌入它:

    {img}
    

    【讨论】:

      【解决方案2】:

      我会创建一个函数来返回图像或链接中包含的图像,然后将其添加到 div。

      var createAvatar = function() {
        if (this.props.link) {
          return <Link to="profile" params={{userId:this.props.user.id}}>
            <img className="__avatarimage" src={this.props.user.avatar} />
          </Link>;
        } else {
          return <img className="__avatarimage" src={this.props.user.avatar} />;
        }
      };
      
      var avatar = createAvatar();
      return <div className={"Avatar Avatar--" + this.props.size} onClick={this.props.clickHandler}>
        {avatar}
      </div>;
      

      【讨论】:

        猜你喜欢
        • 2011-11-06
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多