代码之家  ›  专栏  ›  技术社区  ›  ajayv

React JSX中的条件父打开Div

  •  0
  • ajayv  · 技术社区  · 6 年前

    我有一个这样的例子,在Handlebar中,我们可以有条件地只渲染父打开div,现在,我开始做出反应,所以得到了下面的问题。

    const ProductBlock: FC<Props> = (props: Props): JSX.Element => (
       <div className="image">
          // render the opening div conditionally
          {
           props.showImage ? 
           (
             <div className="show-review-image">
           )
           :
           (
             <div className="show-old-image">
           )
          }
          // this div will be the child of the above resulting conditional div
          <div className="child-div">
            <ul className="inline-list">
              {
                props.myArr.map((attribute: authorAttribute, index: number): JSX.Element => (
                  <li key={index}>
                    {attribute.key} {attribute.value}
                  </li>
                ))
              }
            </ul>
          </div>
       </div>
    </div>
    );
    

    这样做时,我得到了错误 JSX element 'div' has no corresponding closing tag.ts(17008)

    0 回复  |  直到 6 年前
        1
  •  1
  •   M-N    6 年前

    props.showImage ? 让它成为JS,而不仅仅是HTML中的字符串。这导致了你的两个 div s将被视为需要关闭的开始标记。

    然而,还有一个更深层次的问题。您的三元运算符无法按您希望的方式工作。两个选项都必须是完整表达式,而不是部分表达式 表达方式。 <div className="show-review-image"> <div className="show-review-image></div> 是因此,条件表达式中的两条路径必须为它们打开的任何标记都具有关闭标记。

    也就是说,解决方案很简单。将三元表达式放入类名本身: <div className={ props.showImage ? "show-review-image" : "show-old-image" } >