html - 如何在 HTML(文章正文)中嵌入反应组件?
问题描述
我正在使用 react 开发一个博客,文章正文作为 HTML(数百篇文章)保存在数据库中,所以我基本上获取数据并使用<div dangerouslySetInnerHTML={{ __html: data.body}}></div>
.
<Slider />
在客户想要在文章正文中间显示一个或任何其他组件之前,这还不错。
我目前的做法是:
编辑可以
[slider][/slider]
在文章正文的任何部分键入代码在前端,我将每个代码替换为对应的组件
function ReplaceCodesWithComponents({body}) {
return body.replace(/\[.+?\]\[\/\w+?\]/g, (code) => {
// code=[slider][/slider]
let extractedType = code.match(/(?<=\[\/)\w+(?=\])/g);
if (!extractedType) {
return code;
}
// ["slider"]
extractedType = extractedType[0];
// "slider"
switch (extractedType) {
case "slider":
return <Slider />; // this doesn't work
case "products":
return <Products />; // this doesn't work
case "gallery":
return <Gallery />; // this doesn't work
default:
return "";
}
});
}
我怎样才能实现这样的目标?或者这甚至是一个好方法?
如果这是一个好方法,那么在将文章保存在数据库中时执行这个过程是否好?还是每次用户访问文章时执行它?
解决方案
推荐阅读
- java - ClassNotFoundException re android.support.v4.view.ViewPager 充气时
- regex - 如何在 groovy/gradle 中使用正则表达式替换 csv 中的文本?
- c# - 为图像添加边框 1 bpp 索引
- usb - 在 Windows 设备门户中列出 UART -> COM 转换器
- java - Java 邮件 IPv6 本地主机 EHLO
- twitter-bootstrap - 如何使用 variable.scss 在引导程序中更改主按钮的颜色?
- python - Jupyter:如何使用 widgets.SelectMultiple() 以交互方式选择要绘制的系列?
- reactjs - 类型“窗口”上不存在属性“setState”
- c# - 我正在尝试读取指纹数据并将其保存到服务器。我在我的项目中包含了参考 zkemkeeper。三个函数中有一个错误
- javascript - 如何有条件地根据多个键对数组进行分组?