炼化react18新特性第二集之hooks

35 阅读1分钟

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很大,两个状态都急着修改,不能提升用户体验。