Day16 Fragment

React常常碰到一个Component需要回传多个React元素的情形,之前的我在遇到这类情况时,由於JSX的语法只能有一个根元素的关系,就会选择在外层放一个<div>,但有时候这会导致你的HTML架构变糟,例如你需要生成一个清单列表或表格时,但透过fragment便能再不用新增DOM节点的情况下,重组你的React Component。

render() {
  return (
    <React.Fragment>
      <ChildA />
      <ChildB />
      <ChildC />
    </React.Fragment>
  );
}

使用情境

如上所述,当我们若需要产生表格或清单列表等需要回传一连串的 child element时,就可以使用React Fracment了。

class Menu extends React.Component {
  render() {
    return (
      <nav>
        <ul>
          <Lists />
        </ul>
      </nav>
    );
  }
}

为了创造一个清单,下一步需要让 <Lists /> 回传多个<li>回来,但由於JSX只能有一个的关系,若照以往用<div>包覆的方式去解决问题的话,就会选染出无效的HTML架构出来。

class Lists extends React.Component {
  render() {
    return (
      <div>
        <li>Hello</li>
        <li>World</li>
      </div>
    );
  }
}

//最终浏览器选染出的HTML会变成这样
<nav>
  <ul>
    <div>
      <li>Hello</li>
      <li>World</li>
    </div>
  </ul>
</nav>

使用方式

<React.Fragment>包覆即可解决此问题。

class Lists extends React.Component {
  render() {
    return (
     <React.Fragment>
        <li>Hello</li>
        <li>World</li>
     </React.Fragment>
    );
  }
}

//最终浏览器选染出的HTML会变成这样
<nav>
  <ul>
      <li>Hello</li>
      <li>World</li>
  </ul>
</nav>

以下是简写的语法,用空标签包住:

class Lists extends React.Component {
  render() {
    return (
     <>
        <li>Hello</li>
        <li>World</li>
     </>
    );
  }
}


<<:  Day-16 最近有看到什麽好玩有趣的网页或功能?

>>:  [DAY 1]前言

Day 16 (Ps)

1.钢笔工具去背 (影片Ps5) (1)用钢笔画出要去背的物件 a.拉,按着左键不要放>Alt...

新新新手阅读 Angular 文件 - Interpolation(1) - Day13

本文内容 本文内容为阅读官方文件有关interpolation 的笔记内容。 利用 interpol...

不只懂 Vue 语法:如何用 event bus 或 mitt 实现跨元件传递资料?

问题回答 所谓跨元件,即是两个元件并无父子关系,并没有被对方包着。如果要互相传递资料,可以使用 mi...

[SQL]row_number最新一笔

--row_number最新一笔 select * from ( select *, row_num...

Shadow Element:控制 UI 元件的元件

shadow element, 它的命名就透露出它不是个外显的 UI 元件,实际上它的确不会绘制出任...