useDeferredValue-延迟state 当目前没有紧急更新时候,该值才会变成最新值,标记非紧急更新。(类似startTransion)
const [treeInputstate, setTreeInputstate] = useState(0);
const deferedVlalue = useDeferredValue(treeInputstate)
function changeTreeInput(e) {
setTreeInputstate(e.target.value)
}
return (
<div className="App">
<input type="text" onChange={changeTreeInput} />
<Tree lean={deferedValue}/>
</div>
)
在一个组件中这样写,本来input中的value改变时触发状两个改变,一个是onChange立马改变输入框中的值,第二个是Tree组件传入的值改变,useDeferredValue这个钩子标记优先级降一降,可以稍缓一缓再改。,优先响应用户的操作,也就是第一个input里面的响应事件。 如果没有这么个钩子,一旦组件tree很大,两个状态都急着修改,不能提升用户体验。