Поскольку lodah's groupBy()
возвращает объект, где каждый ключ является одним из ваших типов, а значение является массивом элементов с этим типом, вы не можете повторить его с Array.map()
.
Однако вы можете использовать lodash's map()
.Вам понадобится одна карта для итерации групп, а другая для итерации элементов внутри.Вы можете использовать flow()
для переноса операций.
Пример (не тестировался):
const renderGroupupItems = flow([
arr => groupBy(arr, ['type']),
groups => map(groups, group =>
map(group, question => (
<>
<img src={imagePath(`./${question.type}.png`)} alt="star" />
<QuestionsListItem
key={question.id}
type={question.type}
question={question}
/>
</>
)
)
]);
const QuestionsList = ({ questions }) => {
const questionListItem = has(questions, 'questions') ?
renderGroupedItems(questions.questions) : null;
return (
<div>
<ul>
{ questionListItem }
</ul>
</div>
);
};