useDeferredValue
from React Hooks
UIの一部の更新を遅延させる
stateをwrapして使う
docs
イメージ的には、debounceのようなものかmrsekut.icon
ただし、通常のdebounceは指定した秒数を基準にして更新頻度を制御のに対し、
useDeferredValueは最適なrender回数になるように内部で制御されている
useDeferredValueとuseTransitionを特殊なdebounceとして捉える
更に異なる点として、
途中でrenderingを放棄できる
suspend時にfallbackを表示しない
データが読み込まれるまでは、以前の値が表示され続ける
code:ts
function SearchPage() {
const query, setQuery = useState('');
const deferredQuery = useDeferredValue(query);
// ...
}
初回render時は、引数と結果の値は一致する
引数の値の更新時は、
まず遅延値を更新せずに再renderingを行い、
その後、新たに受け取った値で再度renderingを行う