Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从XML创建InjectReact组件_Javascript_Xml_Reactjs - Fatal编程技术网

Javascript 如何从XML创建InjectReact组件

Javascript 如何从XML创建InjectReact组件,javascript,xml,reactjs,Javascript,Xml,Reactjs,假设您制作了一个web框架,它可以帮助您快速为客户创建博客。对于这篇文章来说,它每次都是相同的博客模板,改变的是内容。您的React应用程序是以下内容的简单结构[内容状态每次都在变化] <App> <Navigation/> <Content/> </App> 框架的关键是您拥有包含HTML的XML文件。每个XML文件代表一篇博客文章。该应用程序从XML文件中提取所有HTML,并将其置于“blog posts”数组中的应用程序状态。根

假设您制作了一个web框架,它可以帮助您快速为客户创建博客。对于这篇文章来说,它每次都是相同的博客模板,改变的是内容。您的React应用程序是以下内容的简单结构[内容状态每次都在变化]

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

框架的关键是您拥有包含HTML的XML文件。每个XML文件代表一篇博客文章。该应用程序从XML文件中提取所有HTML,并将其置于“blog posts”数组中的应用程序状态。根据应用程序的状态,数组中的特定条目将显示在内容中

内容的状态有一个名为“html”的字段,该字段保存以字符串形式注入的html。[您必须使用危险的LysetinerHTML]


这个概念很好用,我现在有了一个版本。但是,假设您有一个React组件,希望将其添加到每个博客文章中。假设您想将组件添加到特定部分的特定博客文章中。你想给它添加道具之类的东西。现在,这是一个危险的窗口

这就是我一直在努力寻找最佳方向的地方。我现在唯一的想法是:

既然您现在要用XML编写JSX,只需让每个博客文章都有自己的组件即可。如果this.state.currentPost==1,则显示BlogPost1和类似内容。然而,根据你有多少博客帖子,你必须有大量的if语句,而且每次你有一篇新的博客帖子时都要添加if语句并不理想


当我读到你问题的标题时,我很好奇,发现这个库可以将XML解析为React组件:。但那不是你想要的

当你想在HTML字符串中间使用组件时,我建议:此组件将其子项(带有markdown/html/react的字符串)编译为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>
     );
   }

 });
var React=require('React');
var降价=要求(‘反应显著’);
var MyComponent=React.createClass({
render(){
返回(
{/*将标记源传递给`source`prop*/}
{/*或将其作为子项传递*/}
{/*您也可以嵌套React组件*/}
{`
##理由很好
1.服务器端渲染
2.这完全有效:
相当整洁!
`}
);
}
});