解决Nuxt3切换暗色模式下闪屏问题
2024 年 11 月 03 日 • 开发
文章主要探讨了在开发博客切换主题模块时遇到的闪屏问题,并提出了解决方案。
在开发博客切换主题模块的时候,发现切换完主题色,刷新页面的时候会有闪屏现象(从默认主题一瞬间切换到对应主题的闪烁现象)。
分析原因
是主题色的类是根据储存在本地的值判断后动态添加上的,当页面还在服务端渲染的时候读取不到值,渲染成默认主题,到客户端渲染的时候能够读取到值,就又重新渲染,但是客户端渲染需要一定时间,所以就造成了屏闪问题。
解决方案:
既然原先的方案导致服务端渲染的时候读取不到主题值,从而渲染的是默认主题,那我就想办法让服务端能读取到值。最后查询各种文献资料发现使用cookie是可以在服务端读取的。
使用useState状态管理从cookie中获取值,在app.vue中使用useHead
函数添加主题类,这样做的话,在第一次请求的ssr页面中html上默认就添加了主题
vue
复制代码
<script setup lang="ts">
useHead({
htmlAttrs: {
theme: useState('theme')
}
})
</script>
留言 (0)