с бэка прилетает JSON с описанием как должен выглядеть компонент
Так это же 90% любого фронтового проекта, нет? Есть у вас набор "кубиков", пишете контейнер, который получает весь JSON и в его рендере городите if-ы: "есть такие-то данные -> нарисуй такой-то компонент"
Строку из вопроса можно отрендерить через dangerouslySetInnerHtml , но реакт-компонентом это не станет и, я так понимаю, вам не это нужно
Возможно, вы сможете что-то придумать с
createElement, но он собирает компонент не из строки