【发布时间】:2021-10-14 17:00:48
【问题描述】:
我正在创建一个 React SPA,我的问题是当我转到我的表格只是呈现的 TableRow 信息的页面时,我尝试使用条件渲染,但我仍然遇到同样的问题。
这是带有表格组件的页面(sumariosDenseTable):
import React, { useState, useEffect } from 'react';
import { Container } from './styles';
import SumariosDenseTable from '../../components/SumariosDenseTable';
export default function Sumarios() {
return (
<Container>
<div className="title">Listar Sumários</div>
<SumariosDenseTable />
</Container>
);
}
当我被重定向到这个页面时,只会呈现 TableHead 信息。
这是表格组件代码:
function createData(conteudo, disciplina, curso, dataAula) {
return { conteudo, disciplina, curso, dataAula };
}
const rows = [];
export default function SumariosDenseTable() {
const { sumarios } = useListarSumarios();
const { cursoSigla } = useListarAulas();
React.useEffect(() => {
if (rows.length !== sumarios.length) {
sumarios.map((sum) =>
rows.push(
createData(
sum.sumario.conteudo,
sum.disciplina.codigo,
cursoSigla(sum.cursos),
sum.data
)
)
);
}
}, [sumarios, rows]);
return (
<TableContainer component={Paper}>
<Table sx={{ minWidth: 650 }} size="small" aria-label="a dense table">
<TableHead>
<TableRow>
<TableCell>Conteudo</TableCell>
<TableCell align="right">Disciplina</TableCell>
<TableCell align="right">Cursos</TableCell>
<TableCell align="right">Data</TableCell>
</TableRow>
</TableHead>
<TableBody>
{rows.map((row) => (
<TableRow
key={row.conteudo}
sx={{ '&:last-child td, &:last-child th': { border: 0 } }}
>
<TableCell component="th" scope="row">
{row.conteudo}
</TableCell>
<TableCell align="right">{row.disciplina}</TableCell>
<TableCell align="right">{row.curso}</TableCell>
<TableCell align="right">{row.dataAula}</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
);
}
问题是table组件是在rows数组完全填满之前渲染的 只有当行数组完全填满时,如何才能渲染表格???
【问题讨论】:
标签: javascript reactjs rendering