Hooked.
← Hooked.
値を変えても、画面は描き直されない

同じ「+1」でも、useStateは画面がすぐ更新される。refは「画面の描き直しサイクルの外」にある、値をしまっておくだけの箱。変化を画面に映す必要がなく、ただ覚えておきたいだけの時に使う。

ひとつ前の値を覚えておく

useEffectは画面が描き直された「後」に実行されるので、refへの書き込みを1テンポ遅らせられる。これを利用すると「1つ前の値」を保持できる。差分検知やアニメーションのトリガーなどに便利。