Как создать компоненты Inject React из XML

Представьте, что вы создали веб-фреймворк, который помогает вам быстро создавать блоги для клиентов. Ради этого поста, каждый раз это один и тот же шаблон блога, что меняется в его содержании. Приложение You React представляет собой простую структуру из следующего [где состояние содержимого просто меняется каждый раз]

<App>
  <Navigation/>
  <Content/>
</App>

Что делает фреймворк, так это то, что у вас есть файлы XML, содержащие HTML. Каждый XML-файл представляет собой одно сообщение в блоге. Приложение извлекает весь HTML из файлов XML и помещает его в состояние приложения в массиве «сообщений в блоге». В зависимости от состояния приложения конкретная запись в массиве будет отображаться в Content ...

В состоянии содержимого есть поле под названием «html», в котором содержится HTML-код для вставки в строковой форме. [вы должны использовать опасноSetInnerHTML]


Эта концепция отлично работает, и теперь у меня есть ее версия. Однако представьте, что у вас есть компоненты React, которые вы хотите добавить в каждое сообщение в блоге. Допустим, вы хотите добавить компонент в конкретное сообщение в блоге в определенном разделе. Вы хотите добавить к нему реквизит и тому подобное. Теперь это выходит из окна с опасноSetInnerHTML

Вот где я застрял, пытаясь найти лучшее направление. Единственная мысль, которая у меня возникла сейчас, следующая:

Since you would now be writing JSX in the XML, just make each blog post its own component. You would have ...etc and then if this.state.currentPost === 1 then display BlogPost1 and likewise. Yet you would have to have a huge block of if-statements depending on how many blogposts you have, and its not ideal to have to add everytime you have a new blogpost

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
881
1

Ответы 1

Когда я прочитал заголовок вашего вопроса, мне стало любопытно, и я обнаружил, что эта библиотека для синтаксического анализа XML на компоненты React: xml-реагировать. Но вы просите не об этом.

Если вы хотите использовать компоненты в середине строки HTML, я предлагаю: замечательно реагировать. Этот компонент компилирует свои дочерние элементы (строку с markdown / html / react) в узлы реакции.

Пример из его документов:

 var React = require('react');
 var Markdown = require('react-remarkable');

 var MyComponent = React.createClass({

   render() {
     return (
       <div>
         {/* Pass Markdown source to the `source` prop */}
         <Markdown source = "**Markdown is awesome!**" />

         {/* Or pass it as children */}
         {/* You can nest React components, too */}
         <Markdown>{`
           ## Reasons React is great

           1. Server-side rendering
           2. This totally works:

           <SomeOtherAmazingComponent />

           Pretty neat!
         `}</Markdown>
       </div>
     );
   }

 });

Другие вопросы по теме