Next.js 13中禁用SSR解决useMediaQuery水合错误方案咨询
修复Next.js 13中react-responsive的水合错误
替换原有导入代码,改用Next.js的
dynamic函数动态导入react-responsive并禁用SSR:import dynamic from 'next/dynamic'; const { useMediaQuery } = dynamic(() => import('react-responsive'), { ssr: false, });原因:
useMediaQuery在SSR阶段会访问浏览器专属的API(比如window),导致服务端渲染的内容和客户端首次渲染内容不一致,触发水合错误。禁用SSR后,该钩子仅在客户端加载执行,从根源避免了内容不匹配问题。后续使用
useMediaQuery的方式和之前完全一致,比如:const isMobile = useMediaQuery({ maxWidth: 768 }); const isTablet = useMediaQuery({ minWidth: 769, maxWidth: 1024 });
内容的提问来源于stack exchange,提问作者SpicyyRiice
相关产品推荐
相关产品推荐

