首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hyperapp h函数无法生成组件

Hyperapp h函数无法生成组件
EN

Stack Overflow用户
提问于 2019-05-11 16:50:14
回答 1查看 59关注 0票数 0

我一直在尝试Hyperapp。

出于许多原因,我想使用h函数而不是JSX,我不会在这里讨论原因,但请不要使用JSX!

问题是,当我使用JSX创建组件实例时,一切都很好。

示例组件(在下面的示例中,此组件和JSX等效组件的工作相同):

代码语言:javascript
复制
const Examp = (props) => (
  h("p",{},["this is an example"])
 )

使用JSX的示例视图,这将按预期加载Examp组件(我看到‘这是一个示例’):

代码语言:javascript
复制
const view = (state, actions) => (
  <main>
    <h1>JSX Example</h1>
    <p>Begin</p>
    <Examp/>
    <p>End</p>
  </main>
)

示例视图使用h,这不起作用,我得到一个空的"examp“节点(请注意情况):

代码语言:javascript
复制
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 :/

EN

回答 1

Stack Overflow用户

发布于 2019-08-15 07:34:32

由于Examp是一个组件,应该使用以下语法(没有引号)调用"h“函数:

代码语言:javascript
复制
...
h(Examp, {}, [])
...

只应将HTML基元素定义为字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56092416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档