useLayoutEffect和useEffect的区别: **1.**useEffect是在组件渲染后执行(mounted和updated之后调用)通常用来获取数据,不会影响浏览器布局绘制,但如果涉及setData的操作,会影响布局,比如布局视觉上的跳跃; **2.**useLayoutEffect在浏览器绘制之前执行,适用于需要处理DOM布局并且是同步触发渲染,会阻塞浏览器绘制,所以较大的开销的副作用会导致性能问题 3.组件渲染->DOM更新->useLayoutEffect执行(同步)->浏览器绘制->useEffect执行(异步) 4.对于DOM需求可以用useLayoutEffect获取元素的宽度等,比较紧急地需要在浏览器绘制完成前,用户看到页面前进行对DOM地处理(样式更新),但是在SSR中会报错,因为SSR环境中没有DOM环境;SSR是用户发送请求->服务器会动态生成html字符串(通常由前端框架生成)->服务器将渲染好的html给客户端->浏览器接收之后执行js加载和执行(这样有利于首屏加载)
5.SSR