SPA Componentの推しディレクトリ構成について語る

に公開3
株式会社ナレッジワーク

Discussion

misukenmisuken

こんにちは。
useMemo useCallback のお話、とてもわかる部分が大きいのでコメントさせていただきます。

hooks は使っていけばいくほど、難しさに直面する人は多いようで、自分の周りの人も結構どう書くのが良いか迷ってる人多いですね。

ちゃんと書こうとすると簡単なことしたいだけでも、こんなに書かないといけないのか…となったり。レビューで安全かどうか見るのが大変だったり。

eslint で deps チェックしてくれるとは言え、直書きの useMemo useCallback などが対象なので、カスタムフックで deps を使うと一気にリスクが上がるなど、ちゃんと書けてるかを担保するコストが意外と大きいなと感じています。

さらに、ちゃんと書いているつもりでも、一箇所でも穴があると無駄な再描画に繋がるし、その割にパフォーマンス的に困ってない場所で頑張るのも無駄感あるし、塩梅みたいなところが出てくるとそれはそれでまた方針などに悩みます。

そんな中、ちょうど先日 useCallback の調べごとをしているときに以下の issue にたどり着きました。
https://github.com/facebook/react/issues/16956
2019年から議論しているようですが、 useCallback の使い方について色々書かれています。
主にイベント系のコールバックなど、描画内容に影響を与えない関数の場合、useRef と組み合わせて使えるととても簡潔に書けるようになるが、 useLayoutEffect が子から親に向かって実行されていくのでうまくいかないとか、 render 中に ref.current を更新した場合は Concurrent Mode のときにおかしくなるとか、議論を追っていくとややこしさ満載です。

途中で deps や useMemo を全て自動で補完するような最適化が入ればエンジニアが考えることがすごく減るみたいな夢のようなことも書いてありますが、現実的とは思えませんしね。

一応 useRef と組み合わせる場合、 useLayoutEffect の直前のタイミングで親から子の方向に実行される機構が追加されると成立しそうということはわかりましたが、どう着地するのか気になります。

trick.mastertrick.master

reactを学ぶビギナーです。
教えていただきたいことがございます。
components/pageで*.stories.tsxを配置されておりますが
こちらはどんな役割を担うファイルとなりますでしょうか。