#javascript #reactjs
#javascript #reactjs
Вопрос:
Я делаю что-то отвратительное, чтобы выбрать, какой массив отображать в зависимости от того, имеет ли shownAppointmens длину 0 или нет.
{shownAppointments.length
? shownAppointments
.flat()
.map((appointment) => (
<AppointmentCard
appointment={appointment}
/>
))
: blockedDates
.flat()
.map((appointment) => (
<AppointmentCard
appointment={appointment}
/>
))}
Интересно, можно ли это упростить, выбрав либо shownAppointments, либо blockedDates, а не повторять flat()
и все, что следует за ним. Что-то вроде
(shownAppointments ? shownAppointments : blockedDates).flat()
Комментарии:
1. Да, вы можете, за исключением того, что вы забыли
.length
в условии:(shownAppointments.length ? shownAppointments : blockedDates).flat().map(/*...*/)
Ответ №1:
Пример
Вы можете разделить логику отображения массива на отдельную константу и использовать все необходимые методы цепочки для этой константы.
const hasAppointments = !!shownAppointments.length;
const list = hasAppointments ? [...showAppointments] : [...blockedDates]
list
.flat()
.map((appointment) => (
<AppointmentCard
appointment={appointment}
/>
))
Комментарии:
1. ваш первый ответ сработал нормально! Это то, что я сделал —-> const chosenArray = shownAppointments . длина? Показанные назначения: назначения;
2. @uber Рад, что смог помочь. Не могли бы вы отметить ответ как правильный, если это так?