重置 vuetify 小吃栏中的超时

Lid*_* K. 6 javascript vuex vuejs2 vuetify.js

我正在寻找一种解决方案来重置 vuetify 中的 Snackbar 超时。

例如,当登录时收到 api 响应时,我会打开 Snackbar:

        if (data.status == "success") {
          this.$router.push({ name: "dashboard" });

          this.$store.commit("snackbar/open", {
            color: "success",
            text: data.message
          });
        } else {
          this.$store.commit("snackbar/open", {
            color: "error",
            text: data.message
          });

          this.apiErrors = data.errors;
        }
Run Code Online (Sandbox Code Playgroud)

我的观点是,我第一次登录时出现错误 - 显示小吃栏,然后我快速更改数据以纠正小吃栏的颜色和消息更改,但可见时间不会再次计算,它是基于旧的。我怎样才能做到这一点,以便每次打开小吃栏时都会重置时间?我的意思是,如果小吃栏可见并且我打开另一个,时间就会重新计算。

应用程序.vue

<template>
  <v-app>
    <v-main class="grey lighten-3">
      <router-view></router-view>
      <Snackbar />
    </v-main>
  </v-app>
</template>

<script>
  import Snackbar from "./components/Snackbar";

  export default {
    name: "App",

    components: {
      Snackbar
    }
  };
</script>
Run Code Online (Sandbox Code Playgroud)

小吃吧.module.js

const state = {
    visible: false,
    color: "success",
    text: "",
    timeout: 4000
}

const mutations = {
    open(state, payload) {
        state.text = payload.text;
        if (payload.color) { state.color = payload.color; }
        if (payload.timeout) { state.timeout = payload.timeout; }
        state.visible = true;
    },

    close(state) {
        state.visible = false;
        state.text = "";
    }
}

export default {
    namespaced: true,
    state,
    mutations
}
Run Code Online (Sandbox Code Playgroud)