generated at
2/14/2025, 1:20:02 AM
Next.jsのReact Hookへの最適化は一体何をしているのか
Next.js
は
React Hooks
の最適化を行っている
Babel
ならば
next.js/optimize-hook-destructuring.ts at 79016b879f200c99cc3c3b69b2b84dee14b6615e · vercel/next.js · GitHub
swc
ならば
next.js/hook_optimizer.rs at 79016b879f200c99cc3c3b69b2b84dee14b6615e · vercel/next.js · GitHub
これらの変換はビルトインなhookに対して
const [a, b] = useState(...)
を
const {0: a, 1: b} = useState(...)
にするが,これが一体何を意味しているのかわからなかった
一見して長くなっているように見えるし
ところでこの変換,RestElementが考慮されていないように見えるんだけど,どうなるんだろう?
結論としては,
@babel/plugin-transform-destructuring
が配列として確定できない値について長大なPolyfillを吐くかららしい
オブジェクトにしてしまえば,こんな面倒なことは起こらない
「まともな」配列が返ってくることが保証されているhookについて,
@babel/plugin-transform-destructuring
の
loose
オプションを有効にしたときと同様の結果が得られるような変換を行っている
from
2022-03