在Inferno中,当尝试在编译时定义子元素形状时,有两种定义子元素为文本的方式:
function Hello() {
let h = "Hello";
return (
<p $HasTextChildren>
{h}
</p>
);
}
import { createTextVNode } from "inferno";
function Hello() {
let h = "Hello";
return (
<p $HasVNodeChildren>
{createTextVNode(h)}
</p>
);
}
这两种方式有什么区别?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
就最终结果而言,没有区别。然而,性能方面,前者稍微快一点。但是限制是子元素必须只能是文本。可能有情况下你想要文本和其他内容作为子元素。在这种情况下,你可以使用
createTextVNode()和适当的标志之一,其中之一是$HasVNodeChildren。你可以在文档中看到标志的列表:https://www.infernojs.org/docs/guides/optimizations作为额外的说明,如果编译器在编译时可以看到它,你不必自己定义子元素的形状。所以,不需要这样写:
function Hello() { return <p $HasTextChildren>Hello</p>; }你可以简单地写成:
function Hello() { return <p>Hello</p>; }