【问题标题】:Render raw HTML in Preact without using Preact Markup?在 Preact 中渲染原始 HTML 而不使用 Preact 标记?
【发布时间】:2023-04-04 04:58:01
【问题描述】:

Preact 标记为 8.5kb,是 Preact 大小的一半。有没有一种无需解析即可呈现原始 HTML 的方法?

我能想到的一种方法是渲染一个占位符,然后使用innerHTML 替换componentDidMountcomponentDidUpdate 中的占位符,但有没有不那么老套的方法?

【问题讨论】:

  • preact-X 有dangerouslySetInnerHtml

标签: javascript preact


【解决方案1】:

正如@pmkro 在评论中提到的,您可以使用dangerouslySetInnerHTML 来呈现原始html 字符串。

import { h, render } from "preact";

const vnode = <div dangerouslySetInnerHTML={{
  __html: "<span>foobar</span>"
}} />

render(vnode, document.getElementById("app"));
// renders <div><span>foobar</span></div>

一点警告:您需要绝对确保以dangerouslySetInnerHTML 结尾的字符串已正确转义。否则,您将自己(和您的用户)向 XSS 注入攻击敞开大门。因此名称为dangerouslySetInnerHTML

免责声明:我在 Preact 工作。

【讨论】:

  • 此类攻击是否也与来自可信来源的数据有关?究竟要逃避什么?
猜你喜欢
  • 1970-01-01
  • 2020-09-02
  • 2017-06-18
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
相关资源
最近更新 更多