通过检测浏览器 URL 值在 NextJS 中构建可选布局
Build optionally layouts in NextJS by detecting the browser URL value
我会尝试在 NextJS 中做一些可选的布局。我的问题是我找到了一些方法来检查浏览器 URL 然后根据这些 URL 提供内容。但是通过这种方式,服务器内容和浏览器内容不再相同,因此架构中断。
这是我试用的片段:
export default ({children, title = 'title' }) => {
var
contact = false;
if (exenv.canUseDOM ){ if (window.location.href==="http://localhost:4000/contact" ) { contact= true}; }
else {const contact = false};
if (contact){ return( <div>Hey it is contact ! </div> ) }
else { // return normal layout
我的主机returns我不出所料:
Warning: Text content did not match. Server:
所以...我想知道是否必须在自定义 NextJS 服务器上进行一些自定义设置才能授予 backend/frontend 行为?
或者该地区可能有更便宜的解决方案?
任何提示都很好,
谢谢
您无法删除该警告,它的出现是因为您只是从客户端渲染该布局,因此服务器渲染的布局与客户端渲染的布局之间存在差异。
我不知道exenv.canUseDOM是什么变量,但是你可以用process.browser
检测当前进程是否是服务端渲染。
我会尝试在 NextJS 中做一些可选的布局。我的问题是我找到了一些方法来检查浏览器 URL 然后根据这些 URL 提供内容。但是通过这种方式,服务器内容和浏览器内容不再相同,因此架构中断。
这是我试用的片段:
export default ({children, title = 'title' }) => {
var
contact = false;
if (exenv.canUseDOM ){ if (window.location.href==="http://localhost:4000/contact" ) { contact= true}; }
else {const contact = false};
if (contact){ return( <div>Hey it is contact ! </div> ) }
else { // return normal layout
我的主机returns我不出所料:
Warning: Text content did not match. Server:
所以...我想知道是否必须在自定义 NextJS 服务器上进行一些自定义设置才能授予 backend/frontend 行为?
或者该地区可能有更便宜的解决方案?
任何提示都很好,
谢谢
您无法删除该警告,它的出现是因为您只是从客户端渲染该布局,因此服务器渲染的布局与客户端渲染的布局之间存在差异。
我不知道exenv.canUseDOM是什么变量,但是你可以用process.browser
检测当前进程是否是服务端渲染。