javascript - 用自定义反应组件替换 html 中的元素
问题描述
我想知道用<CustomImage>
组件替换 html 中的所有元素的最佳方法是什么
在渲染函数中调用函数 writeText
writeText(innerHTML) {
// Take raw innerHTML string from props and turn it into actual innerHTML with a placeholder
let tmp = document.implementation.createHTMLDocument();
tmp.body.innerHTML = innerHTML;
const media_sources_to_replace = ['img'];
media_sources_to_replace.forEach(tag => {
let ElArr = tmp.getElementsByTagName(tag);
if (ElArr.length !== 0) {
this.replaceImages(ElArr);
}
});
return tmp.body.innerHTML;
}
尝试如下 replaceImages 似乎不起作用:
replaceImages(elArr) {
const tmp = elArr
for (let i=0;i < tmp.length; i++) {
elArr[i] = <CustomImage alt={tmp[i].alt} imgSrc={tmp[i].src}/>
}
}
我的理解是您无法编辑HTMLCollection
,但我不确定处理此问题的最佳方法是什么。
解决方案
您可以编辑 HTMLCollections,这不是问题。问题是 JSX 代码不是任何 HTML 元素。为此,您将使用以下命令:
ReactDOM.render(<CustomImage alt={tmp[i].alt} imgSrc={tmp[i].src} />, elArr[i]);
如果这不起作用,请在其前面添加此行:
elArr[i].innerHTML = '';
推荐阅读
- github - Github Page 本地仓库恢复
- google-kubernetes-engine - 如何从 Pod 中判断容器正在抢占式节点上运行?
- python - 如何从时间序列图中排除某些日期(例如周末)?
- ruby-on-rails - Rails 5.2 和带有 CURRENT_TIMESTAMP 的 Active Record 迁移
- javascript - 如何在pointerdown PhaserJs 3上获得点击持续时间
- c# - 参考文件如何与构建操作内容一起发布
- java - Android:在运行时更新构造函数值和提供程序 Dagger2
- javascript - 带有“this”的javascript回调
- python - 使用 WebStorm 安装 Python 插件
- php - GD文字大小不变