在 JSX 文件中循环

Looping in JSX files

我正在尝试使用 React 呈现元素的动态列表,即我有一个 javascript 数组 elems = ['foo','bar'] 并且我想生成

<ul>
  <li>foo</li>
  <li>bar</li>
</ul>

我想纯粹在 JSX 中做这件事。有没有方便的方法来做到这一点("equivalent" of angular ng-repeat)?

没有 JSX 方法来做到这一点(据我所知)。 React 中没有等同于 ng-repeat 的东西。但是,JSX 并不像 Angular 模板那样 纯粹 。毕竟,它们会编译成 JavaScript。

最好的方法是循环 JSX 并将其添加到数组中:

render: function() {
        var elems = ['foo','bar'];
        var listItems = [];
        for (var i = 0; i < elems.length; i++) {
            listItems.push(<li>{elems[i]}</li>);
        }
        return (
          <ul>
              {listItems}
          </ul>
        );
}

当您 push 进入数组时,您仍然可以在循环内使用 JSX:

listItems.push(<li>{elems[i]}</li>);

React/JSX的美妙之处在于你基本上只写JavaScript。因此,如果您有一个事物列表并想要创建一个组件列表,只需 map 列表:

<ul>
  {items.map(item => <li>{item}</li>)}
</ul>

(加上箭头函数也很简洁)