我一直在尝试 Hyperapp。
出于多种原因,我想使用h函数而不是 JSX,我不会在这里讨论原因和原因,但请不要使用 JSX!
事情是当我使用 JSX 创建一个组件的实例时,一切都很好。
示例组件(在下面的示例中,此组件和 JSX 等效组件的工作方式相同):
const Examp = (props) => (
h("p",{},["this is an example"])
)
使用 JSX 的示例视图,这会按预期加载 Examp 组件(我看到“这是一个示例”):
const view = (state, actions) => (
<main>
<h1>JSX Example</h1>
<p>Begin</p>
<Examp/>
<p>End</p>
</main>
)
使用 h 的示例视图,这不起作用,我得到一个空的“examp”节点(注意大小写):
const view = (state, actions) => (
h("main",{},[
h("h1",{},["H Example"]),
h("p",{},["Begin"]),
h("Examp",{},[]),
h("p",{},["End"])
])
)
看起来 h 正在更改节点的大小写,这导致它无法加载组件。
我做错了什么,如果是,我应该如何处理?
编辑:查看了 Hyperapp 源代码;hyperapp 使用 document.createElement 来创建节点,并且总是会创建一个小写的节点,因为组件函数需要一个大写字母,组件是否曾经与 h 一起使用过或者这被忽略了?在这种情况下,hyperapp 需要 JSX:/