Как рендерить рекурсивные комментарии в React?
Сделать компонент рекурсивным, конечно же. При рендеринге отдельного элемента проверяете, есть ли вложенные данные - если да (массив ненулевой длины), создаёте ещё экземпляр компонента, передавая ему эти данные:

const Comments = ({ items }) => (
  <React.Fragment>
    {items.map(n => (
      <div className="comment" key={n.id}>
        <h3>{n.name}</h3>
        <div>{n.body}</div>
        {n.reply && n.reply.length ? <Comments items={n.reply} /> : null}
      </div>
    ))}
  </React.Fragment>
);
Элементарно. При помощи вложенных циклов и \ или рекурсивно.