I have been trying Hyperapp.
For a number of reasons I want to use the h function rather than JSX, I won't get into the whys and wherefores here but no JSX please!
Thing is when I create an instance of a component by using JSX everything is fine.
Example component (both this and the JSX equivalent work the same in examples below):
const Examp = (props) => (
h("p",{},["this is an example"])
)
Example view using JSX, this loads the Examp component as expected (I see 'this is an example'):
const view = (state, actions) => (
<main>
<h1>JSX Example</h1>
<p>Begin</p>
<Examp/>
<p>End</p>
</main>
)
Example view using h, this doesn't work, I get an empty "examp" node (note the case):
const view = (state, actions) => (
h("main",{},[
h("h1",{},["H Example"]),
h("p",{},["Begin"]),
h("Examp",{},[]),
h("p",{},["End"])
])
)
It looks like h is changing the capitalisation of the node and this is causing it not be load the component.
Am I doing something wrong, if so, how should I deal with this?
Edit: having looked at the Hyperapp source code; hyperapp uses document.createElement to create nodes and will always create a lowercase node, as component functions need a capital, have components ever worked with h or has this been overlooked? In which case hyperapp needs JSX :/