【问题标题】:Need help in logic building for react table需要帮助构建反应表的逻辑
【发布时间】:2019-07-24 19:10:28
【问题描述】:

我有一个很小的问题,但我是新开发人员,第一次学习反应,发现很难解决。

问题:

我有一个名为 Table 的组件,我通过迭代其他项目来呈现另一个名为 TableRow 的组件。在表格行组件中,我正在渲染行。我有这样的数据行:

1: [a]
2: [a,b]
3: [a]

我想输出这样的东西

1  a
2  a
   b
3  a

我能够实现这样的输出

1  a
2  a
2  b
3  a

但很难获得准确的输出。在表格行组件中,我只是迭代项目并显示它,我必须包含一个登录名,我可以在其中检查 2 的标题是否已经可用,不要放它,只插入数据部分。如何实现。任何帮助将不胜感激。 谢谢。

data: [
{
  header: header
  items: [1]
},
{
   header: header2,
   items: [1,2]
 },
{
   header: header3,
    items: [1,2]
 }
 ]

示例代码:

<Table>
    this.props.data.map(obj => {
        return <NewComponent header = {obj.header} items = {obj.items} />
    })
</Table>

<NewComponent> 
    this.props.items.map(item=> {
        <TableRow> 
                <th> {this.props.header} </th>
                <tb> {item} </tb>
        </TableRow>
    })
</NewComponent>

电流输出:

1 1
2 1
2 2 
3 1

我想要

1  1
2  1
   2
3  1

任何帮助将不胜感激。

【问题讨论】:

  • this.props.header 是什么,是第一列吗?
  • 是的,这是第一列。 @JohnRuddell
  • 那么它是如何从 1 变为 2 变为 3 的呢?它不是来自您正在映射的item
  • 哦 nvm 它来自父映射。表被多次渲染.. 明白了。
  • 请在您的代码中提供标头、this.props.items 和 this.props.header 的示例

标签: reactjs logic react-component


【解决方案1】:

如果是第一次传递,则有条件地呈现标题值

<Table>
    this.props.items.map( (item, idx), => 
        <TableRow> 
            <TableHeader>{idx === 0 ? this.props.header : ''}<TableHeader>
            <TableBody>body>item<TableBody>
        </TableRow>
    )
</Table>

编辑

这是您更新后的示例。

const Table = (props) => {
    const { data } = props;
    return (
      <table>
        <tbody>
          {data.map((row, idx) => (
            <TableRow header={row.header} items={row.items} />
          ))}
        </tbody>
      </table>
    );
  }
}

const TableRow = ({ header, items }) => {
  return items.map((item, idx) => (
    <tr>
      <td>{idx === 0 ? header : " "}</td>
      <td>{item}</td>
    </tr>
  ));
};

Heres a simple example to play with

【讨论】:

  • 嗨@johnRuddel 很抱歉,我认为我无法正确解释它。我再次发布它,以帮助您更好地理解。您的方法很好,但这将创建三个表。 (参考例子)
  • 当然,在我的示例中,我放入了表格,因为我不知道您为 Table TableRow... 使用了哪些元素,但此处的代码与你的问题除了我添加的条件idx === 0 ? this.props.header : ''
  • 啊,你刚刚更改了代码,明白了。没关系,只需将表格元素移到行组件之外。
  • 没有让你感到抱歉,我是新手。 :) @johnRuddell
  • @SagarKumar 像这样。 codesandbox.io/s/react-example-32m65。只需渲染一行而不是一个表格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 2014-07-08
  • 2021-09-28
相关资源
最近更新 更多