react@18——useTransition降级渲染——useDeferredValue降级节流

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react@18——useTransition降级渲染——useDeferredValue降级节流相关的知识,希望对你有一定的参考价值。

useTransition降级渲染

可以对于更新渲染进行降级,提高更重要的组件的提前渲染


import React,useState,useTransition from 'react';
const [isPending,startTransition] = useTransition();

isPending 如果在更新等待渲染时isPending为true,没有更新不渲染时为false
startTransition 它是一个函数,在里面写的更新数据会进行降级


场景:count更新它没有哪么的着急,可以让别的数据更新渲染先执行

import React,useState,useTransition from 'react';

const App = () => 
    const [count,setcount]=useState(100);
    const [isPending,startTransition] = useTransition();

    const addCount = ()=>
        // 对于更新count的数据时行了降级,更新也就会降级
        startTransition(()=>
            setcount(v=>v+1)
        )
    
    return (
        <div>
            /* count更新它没有哪么的着急,可以让别的数据更新渲染先执行 */
            <h3>isPending ? '加载中...' : count</h3>
            <button onClick=()=>addCount()>++++</button>
        </div>
    );


export default App;

useDeferredValue降级节流

import React,useState,useDeferredValue from 'react';
import Home from './views/Home';

const App = () => 
    const [text,setcount]=useState('');
    // 让数据更新降级,起到了节流的效果,让渲染平滑一些
    let deferredValue = useDeferredValue(text)

    return (
        <div>
           <h1>text</h1>
           <hr />
           <input type="text" value=text onChange=e=>setcount(e.target.value.trim()) />
           <hr />
           <Home text=deferredValue></Home>
        </div>
    );


export default App;

Home组件

import React from 'react';

const Home = (text) => 
    const data = Array(1000).fill("勇牛").map((_,index)=>(
        _+"敢牛"+index+"----------"+text
    ))
    return (
        <div>
            <ul>
                
                    data.map((item,index)=>
                        return <li key=index>item</li>
                    )
                
            </ul>
        </div>
    );


export default Home;

以上是关于react@18——useTransition降级渲染——useDeferredValue降级节流的主要内容,如果未能解决你的问题,请参考以下文章

React18——setState变成异步——suspence组件懒加载结合异步数的传递

React18——setState变成异步——suspence组件懒加载结合异步数的传递

使用 React-spring useTransition 的动画在递归循环中无法按预期工作

React-Spring useTransition 将我的列表项打乱

精读《React 18》

在React 中使用 react-i18next 国际化