如何在 Vue JS + Tailwind 中使用 localStorage 实现暗模式 CSS

How to do a dark mode with localStorage in Vue JS + Tailwind CSS

我使用 Vue3 + Tailwind 进行暗模式,但是当我重新加载页面或单击某个重新加载内容的组件时,我的暗模式设置为 false 并且亮模式出现,我不知道如何存储我的数据。这是我的代码:

<div class="relative flex min-h-screen" :class="isDark ? 'dark' : ''">
<button class="px-2 mb-1" @click="isDark = !isDark">
--------------------
<script>
export default {
  setup(){
    let isDark = ref(false)

    return{
      isDark,
    }
  }
}
</script>

obs:我的黑暗模式出现是因为 属性 'dark:' 来自 tailwind css 在我的 div's/components.

您使用 localStorage API (documentation)

你的实现看起来像这样

// Click event callback on the dark mode button
toggleDarkMode(){
    this.isDark = !this.isDark;
    localStorage.setItem('darkMode', this.isDark);
}

// Your setup() function
setup(){
    let isDark = localStorage.getItem('darkMode') == 'true'

    return{
      isDark,
    }
}

注意:本地存储仅存储字符串,因此您的布尔值不会是布尔类型,因此将其作为字符串版本进行比较。有人可能有办法将它再次变成布尔值,但这对我的项目来说效果很好。

阅读 Josh 的回答我只是编辑了一些东西,比如变量的局部变量,例如 Vue 中的一个变量变量应该在 data() 中。 这就是代码:

// The button
<button class="px-2 mb-1" @click="toggleDarkMode">

// Click event callback on the dark mode button
methods:{
toggleDarkMode(){
    this.isDark = !this.isDark;
    localStorage.setItem('darkMode', this.isDark);
 }
}

// Your data() function
data(){
    let isDark = localStorage.getItem('darkMode') == 'true'

    return{
      isDark,
    }
}