0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Hyperapp 2.0.5から動作が変わったという話

Last updated at Posted at 2020-07-27

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の使い方講座とか書きたいな…。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?