在React中动态呈现外部HTML/React组件

jon*_*bbs 9 javascript reactjs wp-api next.js

是否可以从外部源获取HTML/JSX内容并在React中动态呈现它?在我们的例子中,我们想从Wordpress API获取内容并在客户端和服务器上呈现它(我们使用的是NextJS)

因此,Wordpress API返回一个JSON响应,其中包含一个内容属性,该属性是一个HTML/JSX字符串.内容看起来像这样.

{
    content: "<div><Slider imageCount="5" galleryID="1"></Slider><span>This is an image gallery</span></div>"
}
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,它将是HTML和React组件/ JSX的混合,表示为字符串

我会使用Axios来调用内容(使用NextJS的getInitialProps()方法在服务器和客户端上),然后我需要渲染它,但我是新的反应,我可以看到一些问题.

1)在React中,JSX是在构建时编译的,而不是运行时,我看不出如何绕过它(例如,使用$ compile服务在Angular中会很容易).

2)由于我们不知道Wordpress的内容将使用哪些组件,我们必须在页面顶部导入它们中的每一个,内容可能包含一个组件,或者它可能包含一个组件,谁知道?.

现在,我认为这是不可能的,这意味着我们必须重新考虑使用React,但我真的希望有人有答案.

真的很感激任何帮助.

bam*_*mse 6

有趣的问题!

你应该尝试使用react-jsx-parser.我认为它解决了你的问题.不确定它如何与Next JS一起工作 - 我没有使用Next JS的经验.

看看这个沙盒: 编辑24r1ypp00p


你对捆绑的所有组件都是正确的.有一个解决方法.:)

看看这个沙盒: 编辑24r1ypp00p

我创建了一个dynamicComponent期望导入承诺并返回组件的东西.

我改变了导入A,B和C组件的方式index.js.这样,每个动态导入的组件都会获得一个单独的包,只在需要时才会被请求.

这应该解决你的第二个问题.