reactjs - 在数组列表中取一个值
问题描述
每个人我在我的应用程序中都有一个问题要解决我需要在我的数组中取一个特定的值并将他放入我的表中以向用户显示这个值。请参阅下面的代码:
我的模拟数据
{
"Data": "2020-09-21",
"Horario":"09:00:00",
"Segunda": [
{
"Periodo": "1",
"HorarioInicio": "9:00:00",
"HorarioTermino": "10:50:00",
"IdDisciplina": "396",
"DescricaoDisciplina": "Arte (Artes Visuais)",
"DescricaoReduzidaDisciplina": "Arte Vi.",
"DescricaoTurno": "Manhã",
"IdEstabelecimento": "43",
"DescricaoEstabelecimento": "Colégio Correio Lima",
"TipoSituacaoHorario": "Normal"
},
}
我需要访问我的数组 Segunda 中的值
我的界面
interface ISegunda {
Periodo: string;
HorarioInicio: string;
HorarioTermino: string;
IdDisciplina: string;
DescricaoDisciplina: string;
DescricaoReduzidaDisciplina: string;
DescricaoTurno: string;
IdEstabelecimento: string;
DescricaoEstabelecimento: string;
TipoSituacaoHorario: string;
}
export interface IAgendaAulas {
Data: string;
Horario: string;
Segunda: ISegunda[];
}
我的服务
const getAgendaAulas = async (
dataAula: string
): Promise<IAgendaAulas[] | undefined> => {
try {
const { data } = await Api().get<IAgendaAulas[]>(
`/agenda-aulas?DataAula=${dataAula}`
);
if (data) {
return data;
} else {
return undefined;
}
} catch (error) {
return undefined;
}
};
她是我的 tsx 视图
interface IAgendasAulasProps {
agendaDeAulas: IAgendaAulas[];
dataAtualizada: string;
}
export const TabelaHorariosAulas: React.FC<IAgendasAulasProps> = ({
agendaDeAulas,
dataAtualizada,
}) => {
const [aulas, setAulas] = useState<IAgendaAulas[]>();
useEffect(() => {
setIsLoading(true);
AgendaTurmaService.getAgendaAulas(dataAtualizada).then((data) => {
setIsLoading(false);
if (data) {
setAulas(data);
} else {
setAulas([])
}
});
}, [dataAtualizada]);
return (
<Grid container>
<Grid item sm={12}>
<TableContainer component={Paper}>
<Table stickyHeader>
<TableHead>
<TableRow>
<TableCell>Horário</TableCell>
<TableCell>Segunda</TableCell>
</TableRow>
</TableHead>
<TableBody>
{aulas?.map((horario, indexAulas) => (
<>
<TableRow>
<TableCell>{}</TableCell>
<TableCell>{}</TableCell>
</TableRow>
</>
))}
</TableBody>
</Table>
</TableContainer>
</Grid>
</Grid>
我希望有人可以帮助我解决我的问题
解决方案
您可以像这样使用数组解构:
const { Segunda } = aulas;
Segunda.map((i) => i.HorarioInicio, i.HorarioInicio......;
您也可以将其重命名为 Segunda:
const { Segunda: items } = aulas;
items.map((i) => i.HorarioInicio, i.HorarioInicio......;
编辑您自己的代码将是这样的:
它应该工作
interface IAgendasAulasProps {
agendaDeAulas: IAgendaAulas[];
dataAtualizada: string;
}
export const TabelaHorariosAulas: React.FC<IAgendasAulasProps> = ({
agendaDeAulas,
dataAtualizada,
}) => {
const [aulas, setAulas] = useState<IAgendaAulas[]>();
useEffect(() => {
setIsLoading(true);
AgendaTurmaService.getAgendaAulas(dataAtualizada).then((data) => {
setIsLoading(false);
if (data) {
setAulas(data);
} else {
setAulas([])
}
});
}, [dataAtualizada]);
const { Segunda: items } = aulas;
return (
<Grid container>
<Grid item sm={12}>
<TableContainer component={Paper}>
<Table stickyHeader>
<TableHead>
<TableRow>
<TableCell>Horário</TableCell>
<TableCell>Segunda</TableCell>
</TableRow>
</TableHead>
<TableBody>
{items.map(({horario, indexAulas}) => (
<>
<TableRow>
<TableCell>{horario}</TableCell>
<TableCell>{indexAulas}</TableCell>
</TableRow>
</>
))}
</TableBody>
</Table>
</TableContainer>
</Grid>
</Grid>
推荐阅读
- pywin32 - pywin32 / pywinauto 最小化时无法在远程桌面中正常工作
- sas - 具有可选参数的 SAS 用户定义函数
- google-chrome-extension - 创建功能,如谷歌翻译 chrome 扩展
- python - 使用带有 bs4 和或 json 的请求
- python - Python - 跟踪可以由另一个进程重命名的日志文件
- java - 问题错误检查代码
- asp.net - Gridview 删除链接按钮未触发 RowDeleting 事件
- c# - Visual Studio 2015 更新 3 无法读取 NuGet 包
- c++ - 增加迭代变量背后的直觉?
- javascript - 仅使用一个循环对随机数组进行排序,无需排序功能