generated at
React Compiler









2023/3/28現在、Metaの内部で使われている
そのうち、OSS化する予定

>Please note that the annotation mode is a temporary one to aid early adopters, and that we don’t intend for the "use memo" directive to be used for the long term. ref


メモ化処理の自動化
人間がuseMemo、memoを触ることをへらす
今までの「無駄にrenderingされるから自分でmemo化する」という判断が宣言的でないmrsekut
どういう風に使われて、どのタイミングでrenderingされるのか、といったことを意識する必要がある
react compilerがcomponentをtranspileして、変更があったかどうかを判断するコードが生成される


React Compilerによって、Reactの意味論は維持されるが、JSの意味論が変わってしまう
Component内に書いた関数が何故か実行されない、という挙動になる

あまり関係ないけど、React Adbanced 2023の元のコードが、Reactでそんな描き方しなくない?というコードになってるのが気になるmrsekut
ts
function VideoTag({ heading, video, filter }) { const filteredVideos = []; for (const video of videos) { if (applyFilter(video, filter)) { filteredVideos.push(video); } } ... }
Componentの中でuseState使わずに、filteredVideosのようなmutableな変数を使うと冪等にならなくないか
あまりちゃんと考えてないけど、useMemoやuseCallbackって、そもそも冪等な計算のmemo化をする部分なので、JSの意味論的にそこまで違和感が生まれないのでは、という気もする