Preact标记语言的大小为8.5kb,是Preact大小的一半。有没有一种不需要解析就可以呈现原始HTML的方法?
我能想到的一种方法是在componentDidMount
或componentDidUpdate
中呈现一个占位符,然后使用innerHTML
替换占位符,但是否有更好的方法?
Preact标记语言的大小为8.5kb,是Preact大小的一半。有没有一种不需要解析就可以呈现原始HTML的方法?
我能想到的一种方法是在componentDidMount
或componentDidUpdate
中呈现一个占位符,然后使用innerHTML
替换占位符,但是否有更好的方法?
正如@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 的工作人员。
htm
不是原始的HTML。相反,它是一种类似于JSX的格式来编写代码而无需转译的方式。它很轻巧,但并不是免费的,也不能避免所提到的解析问题。 - rschristian
dangerouslySetInnerHTML
。 - pmkro