Hyperapp 2.0.4では正常に動作していたのに、2.0.5以上にあげたら動かなくなったという報告が上がっている。
私の所でも、見事に動かなくなった。どうやら、仕様が変わったようだ。せめて2.1.0とかにしてくれれば良いのに…。
ということで、私が気付いた変更点をあげてみる。
- テキストノードを作成のための
text()
関数が追加された。テキストノードは文字列"hoge"ではなくtext("hoge")
というように記述する必要がある。 -
Lazy()
はmemo()
と名前が変更された。(動作が変わったどうかまでは未確認) - DOM以外のVODMは
h()
関数を経由せずに直接関数として呼び出すようになった。 -
h()
関数において第四引数以降が無視されるようになった。子ノードが複数ある場合は配列にする必要がある。 -
app()
のsubscriptions
に指定する関数は、subscriptionsの配列を返す必要がある。subsciptions自体は[sub, props]
という配列であるため、二重配列ということになる。 - ノードのonイベントに渡すのは
[action, props]
または(node, evente) => [action, props]
になったっぽい。イベントオブジェクトをアクションに渡したいときは(_, e) => [Action, {value: e.target.value)]
みたいな書き方が必要。
もしかしたら、他にもあるかも知れない(Effect周りはまだ未確認)。Reactとの互換性が崩れたため、JSX表記ですっきり書けるようにはならなくなったと思われる。
詳しくは下記のリファレンスを参照して欲しい。
全体的にはよりシンプル、かつ、明確な仕様に立ったような気がする。個人的にはHyperappはお勧めなのだが、使っている人はあまりいないようなのよね。hyperappの使い方講座とか書きたいな…。