這是我的senario:
1.應用程序請求CMS(內容管理系統)頁面內容。
2. CMS返回"<div>Hi,<SpecialButton color="red">My Button</SpecialButton></div>"
3.應用程序消耗內容,使用屬性中提供的數據呈現相應的組件。如何解析HTML到React組件?
我不知道如何做步驟3在React的方式,任何意見表示讚賞。
謝謝@Glenn雷耶斯,這裏是Sandbox來顯示問題。
import React from 'react';
import { render } from 'react-dom';
const SpecialButton = ({ children, color }) => (
<button style={{color}}>{children}</button>
);
const htmlFromCMS = `
<div>Hi,
<SpecialButton color="red">My Button</SpecialButton>
</div>`;
const App =() => (
<div dangerouslySetInnerHTML={{__html: htmlFromCMS}}>
</div>
);
// expect to be same as
// const App =() => (
// <div>Hi,
// <SpecialButton color="red">My Button</SpecialButton>
// </div>
//);
render(<App />, document.getElementById('root'));
Here is a live demo通過Vuejs製造。字符串"<div v-demo-widget></div>"
可以視爲Vuejs指令並呈現。 Source Code。
不要有給你一個確定的答案安迪,但也許能夠指出你的方向,取決於你如何獲得CMS數據。您是否嘗試過使用更高階的組件來呈現從請求中返回的組件?我認爲一個組件然後呈現您的請求的組件可能是要走的路。 –
@BrettEast,一個更高階的組件可以處理請求,但是我的問題是在從CMS獲得字符串'
Hello
是的,這是棘手的,任何機會你的傳入數據遵循反應命名模式,大寫字母的反應組件和小寫的HTML元素?也許正則表達式可以做到這一點? –