javascript - 如何在 react/javascript 中用自定义图像组件替换 <img>

标签 javascript reactjs

我正在建立一个博客。我从 API 获取博客内容 html。在我的项目中,我有一个图像组件,它比默认的 html img 标签更好地处理图像加载,这就是我想要替换它的原因。

我试过这个:

function replaceImages(html) {
  let tmp = document.createElement('div');
  tmp.innerHTML = html;

  let images = tmp.querySelectorAll('img');

  images.forEach((image, index) => {
    image.parentNode.replaceChild(<Image src={image.src} alt={image.alt}></Image>, image)
  })

  return tmp.innerHTML
}

但是我得到这个错误:

TypeError: Failed to execute 'replaceChild' on 'Node': parameter 1 is not of type 'Node'.

最佳答案

您不能将 React 元素实例直接传递到 DOM 中。这就是你收到错误的原因。 <Image>不是 Node 类型(与原生 DOM Node 一样)。

您需要使用某种 形式的 React 渲染来获得实际的 DOM Node :

  images.forEach(image => {
    const host = document.createElement("div");
    ReactDOM.render(<Image src={image.src} alt={image.alt} />, host);
    image.parentNode.replaceChild(host.children[0], image)
  })

关于javascript - 如何在 react/javascript 中用自定义图像组件替换 <img>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58623411/

相关文章:

javascript - 当我使用节点版本 12 时,依赖项 wdio-cucumber-framework 未安装。它的安装直到节点 10

javascript - 不需要在后台验证密码确认和密码吗?

javascript - 如何使用 jQuery 更改元素中的文本?

javascript - jQuery .animate 命令问题

javascript - 使用 jquery load 根据单选值加载 html 内容

reactjs - Redux Thunk `([arg(s)]) => dispatch =>` 的用途?

reactjs - 我可以在reactjs中使用href标签吗?

javascript - 如何在点击时获取DIV ID

javascript - 访问回调中的类属性

javascript - 使用 React.js 使用react-chartjs 在条形图中显示最新标签