Vuetify 在浅色和深色主题之间切换(使用 vuex)

2024-04-13

所以在我的 Vue 项目中,我基本上有两个页面/组件,将根据 URL 使用 vue-router 显示。我可以通过按钮在这些页面/组件之间切换。

我还使用 VueX 来管理一些数据。

现在,我在其中一个组件中添加了一个开关,用于在 Vuetify 的深色主题和浅色主题之间切换。

在此组件的模板中,我执行以下操作:

    <v-switch
      label="Toggle dark them"
      @change="toggleDarkTheme()"
    ></v-switch>

在被调用的函数中我这样做:

    toggleDarkTheme() {
          this.$vuetify.theme.dark = !this.$vuetify.theme.dark;
          console.log(this.$vuetify.theme.dark);
    },

在 app.vue 中我已经包含了<v-app dark>在我的 main.js 中,我有以下内容:

    Vue.use(Vuetify);
    const vuetify = new Vuetify({
      theme: {
        // dark: true,
        themes: {
          light: {
            primary: colors.purple,
            secondary: colors.grey.darken1,
            accent: colors.shades.black,
            error: colors.red.accent3,
            background: colors.indigo.lighten5, 
          },
          dark: {
            primary: colors.blue.lighten3,
            background: colors.indigo.base,
          },
        },
      },
    });
    
    Vue.config.productionTip = false;
    
    new Vue({
      router,
      store,
      vuetify,
      render: (h) => h(App),
    }).$mount('#app');

所以我现在的问题是,当我单击开关时,该组件中的主题确实从浅色模式切换到深色模式。浅色模式是默认模式,当我单击开关一次时,我会得到深色主题。但是,当我单击按钮切换到另一个 URL 时,将使用浅色主题。 如何正确实现这个功能?

提前致谢!


你应该有一个名为的 JavaScript 类vuetify.js,在你的情况下应该是这样的。

import Vue from "vue";
import Vuetify from "vuetify/lib";

Vue.use(Vuetify);

export default new Vuetify({
  theme: {
    themes: {
      light: {
        primary: colors.purple,
        secondary: colors.grey.darken1,
        accent: colors.shades.black,
        error: colors.red.accent3,
        background: colors.indigo.lighten5
      },
      dark: {
        primary: colors.blue.lighten3,
        background: colors.indigo.base
      }
    }
  }
});

您的开关应该可以工作,但为了以防万一,请尝试我在您的组件中制作的这个按钮。

    <div>
      <v-tooltip v-if="!$vuetify.theme.dark" bottom>
        <template v-slot:activator="{ on }">
          <v-btn v-on="on" color="info" small fab @click="darkMode">
            <v-icon class="mr-1">mdi-moon-waxing-crescent</v-icon>
          </v-btn>
        </template>
        <span>Dark Mode On</span>
      </v-tooltip>

      <v-tooltip v-else bottom>
        <template v-slot:activator="{ on }">
          <v-btn v-on="on" color="info" small fab @click="darkMode">
            <v-icon color="yellow">mdi-white-balance-sunny</v-icon>
          </v-btn>
        </template>
        <span>Dark Mode Off</span>
      </v-tooltip>
    </div>

按钮在您的<script>

darkMode() {
      this.$vuetify.theme.dark = !this.$vuetify.theme.dark;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vuetify 在浅色和深色主题之间切换(使用 vuex) 的相关文章

随机推荐

  • Ansible:权限被拒绝(公钥、密码)

    我无法连接到 Ansible 中的主机 这是错误 192 168 1 12 无法到达 gt 改变 假 msg 错误 SSH 在连接过程中遇到未知错误 我们建议您使用 vvvv 重新运行该命令 这会导致 将启用 SSH 调试输出以帮助诊断问题
  • Yii2 迁移。表名中的百分号和括号

    我在github上浏览了yii2 oauth2 server代码 并在其中遇到了有趣的语法迁移文件 https github com Filsh yii2 oauth2 server blob master migrations m1405
  • 客户端非 ES6 浏览器上的 JSX Spread 属性

    ReactJS JSX 有一种可以轻松向组件添加大量属性的方法 var props props foo x props bar y var component
  • 定义深度/维度未知的 C++ 模板

    我想写一个n维直方图类 它应该采用包含其他 bin 等的 bin 的形式 其中每个 bin 包含最小和最大范围 以及指向下一个维度 bin 的指针 bin 的定义如下 template
  • PivotCaches.add 错误 5 - 2003 到 2010 宏

    我有一个 Excel 2003 xls 文件 我试图在 Excel 2010 中运行该文件 我首先将该文件另存为 xlsm 并将该目录添加为信任中心中的受信任目录 我收到错误代码 如下箭头所示 注意 如果我将数据透视表版本更改为 12 它仍
  • 在 C++ 中将 char 或 string 转换为 bitset

    我正在做 DES 加密的作业 但我似乎无法将字符串转换 更不用说将字符转换为位集了 谁能告诉我如何在 C 中将单个字符转换为位集 下列 char c A std bitset lt 8 gt b c implicit cast to uns
  • 如何在 PHP 中实现后台/异步 write-behind 缓存?

    我有一个特定的 PHP 页面 由于各种原因 需要将 200 个字段保存到数据库中 这是 200 个单独的插入和 或更新语句 现在显而易见的事情就是减少这个数字 但是 就像我说的 由于我不想费心去讨论的原因 我不能这样做 我没想到会出现这个问
  • 在交叉过滤器中过滤多个离散值

    有没有人有办法过滤交叉过滤器 https github com square crossfilter wiki API Reference多个值的对象维度 就像是 filterExact cash visa or filter cash v
  • Android - 在相对布局的ImageView中居中Textview

    我有一个带有 ImageView 的相对布局 并且希望在活动布局 xml 文件中将 TextView 置于 ImageView 的中心 这是图像视图 然后是我为 TextView 尝试过的内容 这是相对布局的内部
  • 拖放文件上传

    因此 我正在努力寻找我正在寻找的东西以及如何实现它 我有一个基本的 PHP 文件上传器 用户按下自定义上传按钮 选择一个文件 然后使用 JS 检查更改 即用户选择文件 然后提交上传图像的表单美好的 我现在还想要一个拖放上传区域 因此 用户可
  • 查找数组中缺失的数字

    我试图找到数组中每个缺失的数字 如下所示 Array 0 gt 1 1 gt 2 2 gt 3 3 gt 4 4 gt 5 5 gt 6 6 gt 7 7 gt 8 8 gt 9 9 gt 10 10 gt 11 11 gt 12 12 g
  • 如何在asp.net core rc2中获取控制器的自定义属性

    我创建了一个自定义属性 AttributeUsage AttributeTargets Method AttributeTargets Class public class ActionAttribute ActionFilterAttri
  • Angular-xeditable 可编辑 (Bs​​3),带有日期和 ng-repeat

    我尝试扩展 Angular xeditable 可编辑行 Bs3 的特定示例 添加字段 出生日期 我创建了一个 jsfiddle 来描述问题 http jsfiddle net ffgj62q0 http jsfiddle net ffgj
  • neo4j 在从 csv 导入期间指定数据类型

    有没有办法在导入时告诉neo4j值的类型 例如 neo4j 是否知道 2015 0104T10 33 44 是日期还是字符串 thanks Neo4j 使用 Java 原始类型 字符串或数组作为属性值 没有日期类型 所以 2015 0104
  • ssh-add,自动添加私钥

    我有一个公私 ssh 密钥对 由ssh keygen without密码 我将它与我的 bitbucket 帐户一起使用 特别是与 Mercurial 存储库一起使用 通常我在我的家庭工作电脑中手动添加私钥 使用ssh add ssh id
  • 获取屏幕分辨率作为cmd中的变量

    我需要一个脚本来根据所使用的屏幕分辨率复制特定图像 到目前为止我发现wmic desktopmonitor get screenheight给了我适当的输出 但我在将其解析为可用变量时遇到问题 问题是输出分为三行 我只需要第二行的信息 有人
  • 从详细信息选项卡中获取文件描述

    我希望能够从 dll 或 sys 文件的详细信息选项卡中获取文件描述字符串 我尝试过多种方法来做到这一点 但无法让它们点击 无论如何 是否可以通过命令行执行此操作 使其在屏幕上生成输出 我对使用 VB 提供的 FileVersion des
  • 判断鼠标是否位于表单上方的最佳方法是什么?

    我想通了如何捕获鼠标点击 https stackoverflow com questions 2866936 how can i add an event handler to an event by name覆盖整个表单 但此方法不能很好
  • 从 file:// 方案运行的应用程序出现 CORS 错误

    我有一个 AngularJS Cordova 应用程序 它轮询远程服务器上的 JSON 服务 http method GET url http example com index php 在浏览器中开发并在我的 Intranet apach
  • Vuetify 在浅色和深色主题之间切换(使用 vuex)

    所以在我的 Vue 项目中 我基本上有两个页面 组件 将根据 URL 使用 vue router 显示 我可以通过按钮在这些页面 组件之间切换 我还使用 VueX 来管理一些数据 现在 我在其中一个组件中添加了一个开关 用于在 Vuetif