Sam*_*Sam 5 javascript reactjs react-dom-server gatsby gatsby-image
我正在尝试将一些图像注入我从 Markdown 创建的页面中。我正在尝试使用 ReactDomServer.renderToString()
const componentCreatedFromMarkdown = ({data}) => {
...
useEffect(() => {
const injectDivs = Array.from(document.getElementsByClassName('injectDivs'))
injectDivs.forEach((aDiv) => {
aDiv.innerHTML = ReactDOMServer.renderToString(<Img fluid={data.allFile.edges[0].node.childImageSharp.fluid} />)
}
})
...
}
Run Code Online (Sandbox Code Playgroud)
img 显示为一个黑框,如果我右键单击该图像,我可以在新选项卡中打开它,该选项卡会显示应有的图像。
图像 html 已正确插入到页面中
gatsby-image加载最低质量的图像并应用一些内联样式。所有这些信息都存在于 html 中)这样做是为了在图像上启用模糊效果,以获得更好的用户体验。
永远不会应用加载更高分辨率图像并删除内联样式的客户端代码。
useEffect不会在服务器端运行,而是在组件安装后在客户端运行。可以通过console.log在效果中添加一条语句并查看它是否记录在浏览器的控制台上来验证这一点。ReactDOMServer.renderToString()仅构建组件所需的 HTML,然后要求该组件进行水合。ReactDOM.render将图像放在页面上,因为该效果将在客户端执行。我这里有一份 PR 显示这一点。content/blog/hello-world/index.mdx,你可以injectImage用这个替换 div (其中的文本[]是替代文本)希望有帮助!
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |