延后执行效果的确是达到了,但是原理还是没搞清楚

来源:16-10 React.lazy与React.Suspense与错误边界

Panda_io

2023-06-02

请问老师,这里只有一个任务,延后和不延后在我理解也没有啥区别,因为不存在先执行的任务,但是的确没有loading出现,逻辑上有点想不通,就好比马上改变show的值让组件重新渲染和等一会改变show的值组件重新渲染,始终都是show先改变紧接着触发组件渲染,但效果却又这么大差异,令人费解,还请老师不吝赐教!

export default function App() {
  const [show, setShow] = useState(true)
  const handleClick = () => {
    startTransition(() => {
      // 延后执行
      setShow(!show)
    })

  }
  return (
    <div>
      {/* 组件没有加载前就会显示loading */}
      <button onClick={handleClick}>点击</button>
      <Suspense fallback={<div>loading</div>}>
        {show ? <Welcome/> : <Welcome2/>}
      </Suspense>
    </div>
  )
}
写回答

1回答

西门老舅

2023-06-02

你好,这里的加载和show是两个任务,加载紧急,show不紧急,当切换的一瞬间,加载早已完成,所以看不到loading
0
3
西门老舅
回复
Panda_io
嗯,就是延迟了,所以当前检查不到加载,所以页面就保持之间的样子了,感谢补充。
2023-06-03
共3条回复

Vue3 + React18 + TS4入门到实战 系统学习3大热门技术

专为初级前端人员设计,系统性学习三大技术

261 学习 · 182 问题

查看课程