首页 > 解决方案 > Vuetify 导航抽屉开始关闭,然后一秒钟后打开

问题描述

我在 NuxtJS 上设置了一个 Vuetify Navigation Drawer,使用 Vuex 来处理抽屉的状态。一切正常,除了一个问题——即,当我在桌面上加载页面时,抽屉开始关闭,然后一瞬间打开。这是我在努力刷新的视频,看看我指的是什么: https ://www.loom.com/share/477eb0933b3840d2bf7a9b55aaa8e934

这是我的代码:

//app-bar.vue
<template>
  <v-app-bar app color="indigo" dark>
    <v-app-bar-nav-icon @click.stop="mainDrawer = !mainDrawer" />
    <v-toolbar-title>Application</v-toolbar-title>
  </v-app-bar>
</template>

<script>
export default {
  computed: {
    mainDrawer: {
      get() {
        return this.$store.getters.getMainDrawer;
      },
      set(value) {
        this.$store.dispatch("toggleMainDrawer", value);
      }
    }
  }
};
</script>

// nav-drawer.vue
<template>
  <v-navigation-drawer v-model="mainDrawer" app>
    <v-list dense>
      ...LIST_ITEMS
    </v-list>
  </v-navigation-drawer>
</template>

<script>
export default {
  computed: {
    mainDrawer: {
      get() {
        return this.$store.getters.getMainDrawer;
      },
      set(value) {
        this.$store.dispatch("toggleMainDrawer", value);
      }
    }
  }
};
</script>

// index.js (vuex file)
import Vuex from "vuex";

const createStore = () => {
  return new Vuex.Store({
    state: {
      mainDrawer: null
    },
    getters: {
      getMainDrawer: state => state.mainDrawer
    },
    mutations: {
      toggleMainDrawer(state, value) {
        state.mainDrawer = value;
      }
    },
    actions: {
      toggleMainDrawer({ commit }, value) {
        commit("toggleMainDrawer", value);
      }
    }
  });
};

export default createStore;

知道为什么会发生这种情况以及我可以做些什么来改变它。我应该注意,当我使用 Android Studio Emulator 运行页面时,它工作得很好。我只有台式机有问题。

谢谢。

标签: vue.jsvuexvuetify.jsnuxt.js

解决方案


我有同样的问题并尝试了很多方法来解决它。到目前为止,我发现的唯一方法是使用名为disable-resize-watcher. 它的默认值为 false,因此当您出于某种原因重新加载页面时,导航抽屉会打开。将此道具的值设置为 true 将解决问题。


推荐阅读