html - 是否有一个 HTML "dummy"标签可以在不干扰父子 CSS 规则的情况下对其他元素进行分组?

标签 html css reactjs

我正在使用 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>在里面。如果我使用 wrapper 标签,它会破坏 Bootstrap 规则。

是否有一些虚拟 HTML 标记可以执行此操作?如果不是,为什么?


我会更好地解释我的问题。我有这个结构(它是一个 Bootstrap 导航栏):

<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,我无法做到这一点。

最佳答案

现在不可能,但是sometime in the future it will be .

就我个人而言,我不认为有一个组件可以呈现多个 <li>元素很聪明。更高级别的组件(呈现 <li> 的组件)应该负责元素的组合。您所要做的就是将它们组合成一个数组并将它们呈现在 <ul> 中。 .上述线程讨论了允许组件返回多个顶级组件的危险,尽管他们显然决定在未来的版本中为某些用例支持它(称之为“片段”)。

关于html - 是否有一个 HTML "dummy"标签可以在不干扰父子 CSS 规则的情况下对其他元素进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42301667/

相关文章:

javascript - 如何在开始更改屏幕方向之前检测实际位置?

javascript - react-router 在提供带路径的 url 时忽略嵌套路由

reactjs - React Native to firestore : Firestore (8. 2.1):连接 WebChannel 传输出错

javascript - Chrome 扩展脚本不工作

html - 是否可以在 CSS 中设置 img 标签的 src 属性?

asp.net - 标签 html a 的助手

html - flex 元素水平列表周围的内边距相等

javascript - 在从 getStaticProps 返回的组件中获取未定义的 Prop

html - 是否可以使用 iframe 作为 'proxy' ?

javascript - body end 之前的脚本和 Document onload 之间的区别