「最近のReactへの言及についての違和感」というエントリ書いたら燃えますかね
— イカid:mizchi0x (@mizchi) 2015, 6月 7
僕がみた資料の中でFluxの設計について正しい理解をしていると思えるのはげたさんのこの資料だけです https://t.co/XaKHhhuP2A
— イカid:mizchi0x (@mizchi) 2015, 6月 7
みんなsetStateに騙されてる
— イカid:mizchi0x (@mizchi) 2015, 6月 7
一部で「React使うとコード量が増える」という意見、サーバサイドで書いたテンプレートのレタッチをするjQueryと比べたらそりゃそうなんだけど、SPAでそもそもJS側がテンプレート握るような環境では handlebars とかで書いてたところが JSXになるだけでそれ移行コスト
— イカid:mizchi0x (@mizchi) 2015, 6月 7
とはいえReactを適用するのに必ずしもSPAである必要もなくて、ある程度複雑なコンポーネントの塊として提供する際にも有効
— イカid:mizchi0x (@mizchi) 2015, 6月 7
Reactを有効に使うには常にアトミックに更新する必要があって、propsバケツリレーを一度書いてしまったあとは、基本的にルート要素へのsetState以外は考える必要がない。各要素へのrefs辿って setState するのは設計が失敗している。
— イカid:mizchi0x (@mizchi) 2015, 6月 7
ルート要素以外は本当に特別な事情がない限りstateは登場しない。「コンポーネントがクリックされた時に偶数回だけ発火したい、そのカウントは親から知る必要がない」みたいな閉じた環境でだけ出現する。コンポーネントの内部に全体で使う状態は抱えてはならない。Storeに対してemitする
— イカid:mizchi0x (@mizchi) 2015, 6月 7
管理しないとならない状態が内部に散らばるのがアプリケーション設計の失敗なんだけど、ReactのAPIからImmutabilityを理解して使えてる人は本当に少ない印象がある。間違った使い方で、間違った偏見が生まれて、間違った視点でAngularの対抗馬みたいなポジションにある。
— イカid:mizchi0x (@mizchi) 2015, 6月 7
ReactのAPIがああなのは広く使われるために本来の用途に反するAPIまで用意しないといけなくなってしまっていて、意図に反する使い方への大量の警告でユーザーをに注意を促したいんだろうけど、警告出しすぎて本来伝えないといけない情報をロストしてるのがReactの問題であるとも言える
— イカid:mizchi0x (@mizchi) 2015, 6月 7
@writeboostguy コアの状態とコアの状態に由来して書き換わるプロパティとそれらによって生成されるテンプレートという三段階で考える必要があります
— イカid:mizchi0x (@mizchi) 2015, 6月 7
常に同じデータから同じViewが生成される、これがBackboneにはじまるクライアントサイドMVWが目指してきたことで、それが出来ないからデータバインドと分割統治で必要なコンポーネントだけ更新する仕組みを人力で管理していて、仮想DOMの発明はそこからの解放なんですよ
— イカid:mizchi0x (@mizchi) 2015, 6月 7
ここちょっと言及が足りない。Backboneを使い込むとそういう結論になると思う。 アトミック性を担保する究極の方法は、雑に言うと更新の度にdocument.bodyを書き換えて毎回デリゲーションを走らせることになる。
コンポーネント単位の分割統治の概念を強く縛られているほど、Immutableデータ構造による更新を信頼出来なくなりがちなのでrefsで各要素に直接手を入れてしまう。なので、げたさんが書いてたように「正しいデータ構造は正しいビューになる」ということを最初に理解すべきなんです。
— イカid:mizchi0x (@mizchi) 2015, 6月 7
イカ以外のこと考えて消耗してきた
— イカid:mizchi0x (@mizchi) 2015, 6月 7