目录
把整站迁到 App Router 之后,最常出现的错误不是类型报错,而是水合不一致。
不要在渲染期读浏览器状态
任何在服务端渲染时无法确定的值 —— localStorage、matchMedia、new Date() —— 都不要在首帧使用。
我的做法统一改成:服务端给一个稳定的默认值,挂载后再用 useEffect 换成真实值。
把客户端边界尽量压低
一个 'use client' 会让整棵子树都进客户端包。所以它应该尽可能靠近真正需要交互的那个按钮。
边界画在组件树的越高处,代价越大。
