難しい話ではないが、思考の整理のために書いてみる。
図は、左の人が右の人に「この材料で何か喋って」と頼む様である。 下に行くほど右の人に大きな権限と表現の自由が与えられている。
同じ挨拶でも「Hi」と言わせたい時は、権限の委譲が不十分だと左の人が面倒を見ることになる。
逆にもっと丸投げしてみる。ユーザーIDだけ渡すから何とかしろ。 DBにアクセスしに行って、このユーザは現在英語で表示する設定にしているから名前は「Taro Yamada」が適切だろう。
でもそれだと通信が沢山発生するのでキャッシュから取ってもらおう。
いやもうむしろ全部お前に任せた。 必要なものはSessionスコープなりrequestスコープから全部取れ。
そうなると必然的に任された方はアプリケーションについて十分な知識を持っている。 そうではなく、汎用的なユーティリティとして振舞う場合は細かくデータを渡す形式が向いている。
React.jsみたいに、コンポーネントを組み立てるフレームワークが増えてきた。
図では、検索を行うために<TodoSearch>
コンポーネントに上からオプションを渡している。
<TodoSearch>
コンポーネントの位置が変わって、上位のノードに変更が入ってしまった。
これを防ぐひとつの解決策としては、context
のような何でもボックスを全てのコンポーネントに渡すようにする。
もうひとつは、グローバルに何でもボックスを転がしておく。
やはり、汎用的なコンポーネントとは区別する。
以上。