【发布时间】:2017-02-18 01:44:00
【问题描述】:
我正在使用 Bootstrap,它定义了一组 CSS 规则。我正在尝试使用 React 来呈现我的应用程序,但它总是需要一个包装器元素,我不能只呈现一个元素数组。
这是无效的:
class MyClass extends React.Component {
render() {
return (
<li></li>
<li></li>
);
}
}
但这是:
class MyClass extends React.Component {
render() {
return (
<ul>
<li></li>
<li></li>
</ul>
);
}
}
在我的具体情况下,我在外面已经有一个<ul>,我只需要在里面渲染很多<li>s。如果我使用包装标签,它会破坏 Bootstrap 规则。
是否有一些虚拟的 HTML 标记来执行此操作?如果不是,为什么?
我会更好地解释我的问题。我有这个结构(它是一个引导导航栏):
<ul class="nav navbar-nav navbar-right">
<!-- a bunch of <li> generated by AngularJS -->
<!-- for example, the following my be generated: -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown">Menu 1</a>
<ul class="dropdown-menu">
<li>
<a>Menu 1 Item 1</a>
</li>
<li>
<a>Menu 1 Item 2</a>
</li>
</ul>
</li>
<!-- now, the following is the React component I want to add -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown">React Menu</a>
<ul class="dropdown-menu" id="my-react-component">
</li>
</ul>
要创建它,我正在做:
class MyComponent extends React.Component {
render() {
let x = [];
for (let lang of langlist) {
x.push(
<li>
..stuff..
</li>
);
}
return (
<something>
{x}
</something>
);
}
}
我也尝试过这样重构:
<ul class="nav navbar-nav navbar-right">
...
<!-- now, the following is the React component I want to add -->
<li class="dropdown" id="my-react-component"></li>
</ul>
还有:
class MyComponent extends React.Component {
render() {
let x = [];
for (let lang of langlist) {
x.push(
<li>
..stuff..
</li>
);
}
return (
<a class="dropdown-toggle" data-toggle="dropdown">React Menu</a>
<ul class="dropdown-menu">
{x}
</ul>
);
}
}
但正如你所见,我需要另一个包装器元素,如果我想保留 Angular 和 React,我就做不到。
【问题讨论】: