Я пытаюсь получить доступ к вложенным значениям в массиве REST API в LIST VIEW проекта React-Admin. Короче говоря, я пытаюсь сделать что-то вроде «Array.item» при передаче его компоненту, который его отображает.
Мои данные заполняются так:
Каждый массив сообщений выглядит так, вот один из них:
for (let i = 0; i < 13; i++) {
data.messagesDirect.push({
id: i,
read: faker.random.boolean(),
date: faker.date.past(),
subject:
faker.name.jobDescriptor() +
' ' +
faker.name.jobArea() +
' ' +
faker.name.jobType(),
content: faker.lorem.paragraph(),
email:
faker.internet.email() +
' - ' +
faker.name.firstName() +
' ' +
faker.name.lastName()
});
}
А потом я помещаю их в один массив в конце.
data.messages.push({
id: 0,
inbox: data.messagesInbox,
outbox: data.messagesOutbox,
direct: data.messagesDirect
});
data.messagesInbox, outbox и direct являются универсальными массивами, они содержат данные одного типа.
Я пытаюсь получить доступ к каждому массиву по отдельности и передать эту информацию компоненту, созданному для визуализации этих массивов.
export const MessagesList = props => (
<FullWidthTabs>
<List actions={<InboxListActions />} {...props}>
<MessagesGrid data="messages.inbox" />
</List>
<List actions={<OutboxListActions />} {...props}>
<MessagesGrid data="messages.outbox" />
</List>
<List actions={<DirectListActions />} {...props}>
<MessagesGrid data="messages.direct" />
</List>
</FullWidthTabs>
);
Независимо от того, что он передает контексту массива, как будто он находится только на верхнем уровне, он никогда не передает точный объект массива, на который я ссылаюсь с помощью "."
Я делаю это неправильно, и мне нужно понимание и руководство о том, как сделать это правильно.
Сетка сообщений ожидает, что массив будет перебирать и создавать пользовательский интерфейс для каждого элемента.
const MessagesGrid = ({ data, basePath, resource }) =>
console.log(data) || (
<div style={{ margin: '1em' }}>
{data.map(id => (
<Card key={id} style={cardStyle}>
<ReadField record={data[id]} source="confirmed" />
<CardHeader
title={<TextField record={data[id]} source="subject" />}
subheader={<DateField record={data[id]} source="date" />}
/>
<CardContent>
<TextField record={data[id]} source="content" />
</CardContent>
...