У меня есть случай, когда мне нужно отобразить один и тот же массив дважды в моем методе рендеринга, чтобы отобразить различные свойства объектов в массиве.
Итак, это так:
<Row>
<Column xs="12" md="6">
<Row>
<Column xs="12">
<Undertekst>
<FormattedMessage id="InfoPanel.PaymentDates" />
</Undertekst>
</Column>
</Row>
{getPeriods(payment.periods, periodsDates)}
</Column>
<Column xs="12" md="6">
<Row>
<Column xs="12">
<Undertekst>
<FormattedMessage id="InfoPanel.PaymentAmount" />
</Undertekst>
</Column>
</Row>
{getPeriods(payment.periods, amount)}
</Column>
</Row>
Итак, поскольку мне нужно отобразить один и тот же массив в двух местах, я создал функцию, которая принимает массив и функцию, которая будет отображать дочерний элемент из текущего объекта в массиве.
const periodsDates = period => `${moment(period .from).format(DDMMYYYY_DATE_FORMAT)} - ${moment(period .to).format(DDMMYYYY_DATE_FORMAT)}`;
const amount= period => formatCurrency(period.amount);
const getPeriods = (periods, children) => periods.map(period => (
<Row>
<Column xs="12">
<Normaltekst>
{children(period )}
</Normaltekst>
</Column>
</Row>
));
Интересно, так ли это? Или есть лучший способ решить эту проблему, может быть, с помощью карри, если это возможно?