我一直在尝试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 :/
发布于 2019-08-15 07:34:32
由于Examp是一个组件,应该使用以下语法(没有引号)调用"h“函数:
...
h(Examp, {}, [])
...只应将HTML基元素定义为字符串。
https://stackoverflow.com/questions/56092416
复制相似问题