我的 HTML 内容来自 API(在本例中为 Gatsby),因此我dangerouslySetInnerHTML按照推荐使用。问题是,它扰乱了我的样式,特别是网格。我有一个这样的 html 标记:
<article>
<h2>Title of the post<h2>
<small>Date of the post</small>
<div dangerouslySetInnerHTML={{ __html: post.html }} />
</article>Run Code Online (Sandbox Code Playgroud)
这个<article>标签包含一个display: grid样式。但是该 div 中的所有内容都占用了宝贵的空间,因此难以设置样式(这也不是一个有用的 div!)。所有重要的 html 都在里面,但我想去掉实际的<div>标签。有什么办法吗?
注意:我已经{post.html}直接尝试过,但它是无法解码的编码URI。
谢谢!
你可以直接从 React 设置 HTML,但是你必须危险地输入 SetInnerHTML 并传递一个带有 __html 键的对象......
因此,没有什么可以阻止您从 graphql 查询的不同部分形成自己的 html 字符串,如下所示:
const createFullPostMarkup = () => {
return { __html: `<h2>Title of the post</h2><small>Date of the post</small>${ post.html }` }
}
Run Code Online (Sandbox Code Playgroud)
然后将其设置为您文章中的内部 html,如下所示:
<article dangerouslySetInnerHTML={createFullPostMarkup()} />
Run Code Online (Sandbox Code Playgroud)
请记住,这只是一个带有__html键的对象。你可以在里面放任何东西。
注意:我认为您可能会在此开放功能请求中描述。对于您的用例,我认为上述解决方案非常有效。但是,如果您仍然不满意,请查看链接问题中的讨论。
| 归档时间: |
|
| 查看次数: |
8734 次 |
| 最近记录: |