useTransition
startTransition 可以标记一个或者多个状态的 set 方法,将他们标记为 transition,也就是调低他们更新的优先级。
ts
const [isPending, startTransition] = useTransition();
但是这里需要注意的是,被调低的不是 set 方法本身的执行,而是其对应的 UI 更新。
isPending 表示是否还有未完成的 UI 更新任务。我们可以利用这个状态来判断请求是否正在发生
useTransition 可以在组件顶层同时将多个 state 的 set 方法设置为低优先级。这一点是 useDeferredValue 做不到的。
tsx
function TabContainer() {
const [isPending, startTransition] = useTransition();
const [tab, setTab] = useState('about');
const [other, setOther] = useState(false);
function selectTab(nextTab) {
startTransition(() => {
setTab(nextTab);
setOther(true);
});
}
// ...
}
useDeferredValue 可以在子组件中,设置来自 props 的状态延迟。这个也是 useTransition 不方便做到的
tsx
export default function Ex(props) {
const deferred = useDeferredValue(props.value);
// ...
}
Contributors
作者:Long Mo
字数统计:218 字
阅读时长:1 分钟
文章作者:Long Mo
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Longmo Docs !