【问题标题】:vue bootstrap toaster instantly vanishing / hiding itselfvue bootstrap烤面包机立即消失/隐藏
【发布时间】:2021-07-06 11:17:42
【问题描述】:

在我的 Vue Bootstrap (v2.21.2) Web 应用程序中,我想使用 Toasts 向用户显示一些错误。这些错误是由 REST-API 客户端产生的。在我的 vb 组件中,我捕获了这些错误并调用了一个函数,该函数本身使用 https://bootstrap-vue.org/docs/components/toast#toasts-on-demand this.$bvToast.toast() 来动态创建和显示错误消息。 正如预期的那样,吐司已创建,但会立即再次隐藏起来。我尝试禁用自动隐藏属性并使用无效的超时。因为我在一些子组件中调用了这个函数,所以我也尝试调用this.$root.$bvToaster.toast(),但 toasts 仍然只显示大约 100 微秒左右。

我的项目的相关(简化)代码摘录:

App.vue:

<template>
  <div id="app">
    <Navbar @viewChanged="view = $event;" />
    <Pki v-if="view == 'pki'" />
  </div>
</template>

<script>
import Navbar from "./components/Navbar.vue";
import Pki from './components/Certificates'
export default {
  data() {
    return {
      view: null
    }
  },
  name: "FooBar",
  components: {
    Navbar,
    Pki
  },
};
</script>

证书.vue:

<template>
    <!-- ... -->
</template>

<script>
    // ...
    mounted() {
      this.getCertificates();
    },
    methods: {
      alert(title, content, variant = 'danger') {
        this.$bvToast.toast(content, {
          title: title,
          toaster: 'b-toaster-bottom-right',
          variant: variant,
          solid: true,
          appendToast: true,
          autoHideDelay: 10000
        });
      },
      getCertificates() {
        axios.get("/v1/pki/certificates")
        .then((response) => {
             // ...
          });
        })
        .catch((error) => {
          this.alert('API Error', 'failed to fetch certificate list (' + error.message + ')');
          console.log('getCertificates(): HTTP ERROR ' + error.response.status + ' (' + error.response.data + ')');
        });
      }
    }
</script>

【问题讨论】:

  • 您是否将 Bootstrap AND BootstrapVue CSS 导入到您的项目中?我还会仔细检查您安装了哪个版本的 Bootstrap。
  • 啊,是的,我确实这样做了。我不知道为什么。我最初使用 vue-cli 创建了项目骨架。导入'bootstrap/dist/css/bootstrap.css';导入'bootstrap-vue/dist/bootstrap-vue.css';导入'bootstrap-vue/dist/bootstrap-vue-icons.min.css';
  • 我的问题可能措辞不当。您应该同时导入两者,因此您所拥有的似乎是正确的。接下来是检查您安装的 Bootstrap 版本。
  • 明白了。谢谢你的澄清。关于 bootstrap-version 我的 package.json 定义如下: "bootstrap": "^4.6.0", "bootstrap-vue": "^2.21.2",
  • BootstrapVue 不正式支持 Bootstrap 4.6.0,因此您可以尝试降级到 4.5.3。不过,我认为这不会解决问题。我在文档 playground 上测试了您的 alert 方法,并希望在那里工作。

标签: vue.js bootstrap-4 bootstrap-vue


【解决方案1】:

我认为您没有合适的引导 css 版本。

例如 4.5.3 引导 css 并在加载 vue 引导程序后

遇到了同样的问题,解决了

【讨论】:

  • 感谢您的回复。你确定吗? bootstrap-vue.org/docs 定义了以下版本:“需要 Vue.js v2.6,建议使用 v2.6.12”,“需要 Bootstrap v4.3.1,建议使用 v4.5.3”,“BootstrapVue 版本 v2.21.2”。我尝试了 bootstrap 4.6.0 和 4.5.3,但没有任何改变
  • 我有以下内容: Head cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/…> 底部
【解决方案2】:

如果您使用的是 bootstrap 5,只需添加这个 css

.toast:not(.show) {
   display: block;
}

【讨论】:

  • 这对我有用。 tks
猜你喜欢
  • 1970-01-01
  • 2018-05-12
  • 2019-05-02
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
相关资源
最近更新 更多