reactjs - 如何在没有包装器 div 的情况下使用 dangerouslySetInnerHTML?
问题描述
我的 HTML 内容来自 API(在本例中为 Gatsby),因此我dangerouslySetInnerHTML
按照建议使用。问题是,它与我的样式相混淆,尤其是网格。我有一个像这样的 html 标记:
<article>
<h2>Title of the post<h2>
<small>Date of the post</small>
<div dangerouslySetInnerHTML={{ __html: post.html }} />
</article>
这个<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 }` }
}
然后在您的文章中将其设置为内部 html,如下所示:
<article dangerouslySetInnerHTML={createFullPostMarkup()} />
请记住,这只是一个带有__html
键的对象。你可以在里面放任何东西。
注意:此开放功能请求描述了我认为您可能追求的内容。对于您的用例,我认为上述解决方案非常有效。但是,如果您仍然不满意,请查看链接问题中的讨论。
推荐阅读
- arrays - 我正在编写代码以找出总数之间的差异。二进制数中的 1 和 0,使用数组
- python - ConnectionError: ('连接中止。', BadStatusLine('')
- power-automate - Power Automate 中的 Office 脚本 - 共享脚本但不通过工作簿
- javascript - 如何将 SerializeObject 解析为 Json 数组对象 jQuery
- python - 用指定的坐标绘制 networkx
- docker - 当脉冲 vpn 处于活动状态时,无法访问 localhost 端口映射上的 docker(对于 Windows)容器
- azure - Azure 函数也在未计划时运行
- reactjs - 类型“{}”.ts(2339) 上不存在属性“getTrimmedCanvas”,签名板
- swift - 在swift 5中,如何在[String: Float]的字典中检索第二个低值的key?
- fluid-framework - 如何使 Fluid 框架离线工作?