所以我的问题是,Next.js不能在客户端访问localStorage
,因此将提供默认情况下有或没有class="dark"
的HTML。
这意味着,当用户重新加载页面时,<html>
暂时不具有class="dark"
,导致在执行某个Java脚本并将class="dark"
添加到<html>
之前,出现浅色背景色闪烁。如果我将class="dark"
与HTML一起发布,同样的问题也会发生,但情况正好相反:在class="dark"
从<html>
中移除之前,浅色模式的用户将体验到深色背景的闪烁。
有没有办法在页面呈现之前*执行一些Java脚本?然后,我将能够根据用户的localStorage
向<html>
添加或不添加class="dark"
。
2条答案
按热度按时间qnakjoqk1#
当然,使用以下内容将
noflash.js
文件添加到您的公共目录然后,将以下
script src
标记添加到pages/_document
文件的Head
类中 Package 的返回内容中上面的方法有效,但下面的方法与Nextv10+完美配合。它只需要将以下配置添加到根next.config.js文件中。
next.config.js
然后,更改
pages/_document
文件中的以下脚本标记,如下所示before
after
Link to a repo where I use the first approach(从2020年秋季开始,在TailWincss内置暗模式支持之前)
rhfm7lfc2#
我的解决方法是通过在第一次渲染中进行条件渲染,
请看我的回答。