当前位置: 首页 > 知识库问答 >
问题:

在React中有条件地添加表n 1表行()

马梓
2023-03-14

我有问题动态添加jsx表行到表中的反应。

我的案例如下:

如果表行包含子行,请将它们添加到主行之外。

这是我最初的设计:

        {rows.map((row) => {
        const expanded = _.includes(expandedRows, row.name); // check if row is expanded or not
        const subRows = row.subRows && row.subRows.map((subRow) =>
          <SubRow key={subRow.name} theme={theme} subRow={subRow.name} />);

        return (
          <div>
            <Row
              key={row.name}
              theme={theme}
              handleUpdate={handleUpdate}
              handleExpandOrCollapseRow={handleExpandOrCollapseRow}
            />
            {expanded && row.subRows && subRows}
            {expanded && !row.subRows && <p>No subrows exist</p>}
          </div>
        );
      })

问题是不允许div作为tbody标记中的子级。你知道我怎样才能不把我的报税单写进div里就解决这个问题吗?

我在考虑将整个tbody移动到我的行组件,并有条件地在那里渲染子行,但是我看不出这有什么帮助,因为我仍然不能在返回周围使用任何包装器...我唯一能使用的包装器是tbody,这只能作为所有行的父级发生一次。

有什么想法吗?

共有1个答案

万楷
2023-03-14

相反,您可以简单地收集数组中的,然后返回数组

renderTableRows() {
    const rows = [];

    // Push the main row first
    rows.push(
        <Row
            key={row.name}
            theme={theme}
            handleUpdate={handleUpdate}
            handleExpandOrCollapseRow={handleExpandOrCollapseRow}
        />
    );

    // Then push the subrows
    row.subRows.forEach(subRow =>
        rows.push(
            <SubRow key={subRow.name} theme={theme} subRow={subRow.name} />
        );
    );

    return rows;
}
render() {
    if( this.state.isLoading ) {
        return Table.renderSpinner();
    }

    return (
        <table>
            { this.renderTableRows() }
        </table>
    );
}

我不能肯定地说,如果代码将为您开箱即用。但是这种模式应该可以帮助你解决问题。

 类似资料:
  • 我有以下一段代码: 有没有一种很好的方法可以有条件地添加元素,比如使用流操作?我只想在列表为空时添加method2中的元素,否则返回,以此类推。 编辑:值得一提的是,这些方法包含繁重的逻辑,因此需要防止执行。

  • 问题内容: 如果满足特定条件,是否有办法仅向React组件添加属性? 我应该在渲染后基于Ajax调用将required和readOnly属性添加到表单元素中,但是由于readOnly =“ false”与完全省略该属性不同,因此我看不到如何解决此问题。 下面的示例应解释我想要的内容,但将无法正常工作(解析错误:意外的标识符)。 问题答案: 显然,对于某些属性,如果您传递给它的值不真实,React足

  • 问题内容: 是否可以根据条件向标签添加内容?像在此示例中一样,当我只想在第一次迭代中添加时(仅用于的第一个元素)? 问题答案: 是的,在这种情况下,AngularJS具有两个指令: 可以使用ng-show / ng-hide指令族基于评估表达式的结果来隐藏(通过使用显示CSS规则)DOM 3的一部分。 如果我们想有条件地物理删除/添加DOM的一部分,那么ng-switch指令家族(ng-switc

  • 我尝试了各种方式添加Excel电子表格。但问题总是相同的。 我尝试了这里提出的代码, 将工作表添加到现有excel文件 使用Apache POI for Java在现有Excel工作簿中创建新工作表 问题是:

  • 对于在其生命周期的某个点隐藏的组件,呈现它的最佳方式是什么?1)渲染组件,但不显示它(显示:无)。2)只在需要时渲染组件。什么对性能更好?如果组件的道具和状态稍后更新,是否最好让组件存在,但隐藏在虚拟DOM中? 或者这个:

  • 我想创建一个有条件添加成员的对象。简单的方法是: 现在,我想写一段更地道的代码。我正在尝试: 但是现在,