загрузочный тостер vue мгновенно исчезает / скрывается

#vue.js #bootstrap-4 #bootstrap-vue

Вопрос:

В моем веб-приложении Vue Bootstrap (v2.21.2) я хочу использовать тосты, чтобы сообщить пользователю о некоторых ошибках. Эти ошибки создаются клиентом REST-API. В моих vb-компонентах я улавливаю эти ошибки и вызываю функцию, которая сама использует https://bootstrap-vue.org/docs/components/toast#toasts-on-demand this.$bvToast.toast() для динамического создания и отображения сообщения об ошибке. Как и ожидалось, тост создается, но мгновенно снова скрывается. Я попытался отключить свойство автоматического скрытия и поиграть с тайм-аутом, но это не возымело никакого эффекта. Поскольку я вызываю эту функцию в некоторых компонентах, я также пытался вызвать this.$root.$bvToaster.toast() , но тосты по-прежнему отображаются только в течение примерно 100 микросекунд или около того.

Соответствующий (сокращенный) код-выдержки из моего проекта:

Приложение.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>
 

Комментарии:

1. Вы импортируете CSS начальной загрузки И начальной загрузки в свой проект? Я бы также дважды проверил, какую версию начальной загрузки вы установили.

2. Ах да, на самом деле знаю. Хотя я не знаю, почему. Я изначально создал скелет проекта с помощью vue-cli. импортируйте «загрузочный файл/dist/css/загрузочный файл.css»; импортируйте «загрузочный файл-vue/dist/загрузочный файл-vue.css»; импортируйте «загрузочный файл-vue/dist/загрузочный файл-vue-значки.min.css»;

3. Возможно, я неправильно сформулировал свой вопрос. Вы должны импортировать и то, и другое, так что то, что у вас есть, кажется правильным. Следующим шагом будет проверка версии начальной загрузки, которую вы установили.

4. Попался. Спасибо за разъяснение. Что касается начальной загрузки-версии, мой пакет.json определяет следующее: «начальная загрузка»: «^4.6.0», «начальная загрузка-vue»: «^2.21.2»,

5. BootstrapVue официально не поддерживает Bootstrap 4.6.0 , поэтому вместо этого вы можете попробовать понизить рейтинг до 4.5.3 . Хотя я не думаю, что это все исправит. Я протестировал ваш alert метод на игровой площадке docs и решил поработать там.

Ответ №1:

Я думаю, что у вас нет соответствующей версии css начальной загрузки.

например, 4.5.3 загрузочный css и после загрузки начальной загрузки vue

Была та же проблема, и это решило ее

Комментарии:

1. Спасибо за ответ. Ты уверен? bootstrap-vue.org/docs определяет следующие версии: «Vue.js В2.6 требуется, В2.6.12 рекомендуется», «Бутстрап В4.3.1 не требуется, В4.5.3 рекомендуется», «BootstrapVue V2 релиз.21.2.» Я пытался как загрузочный 4.6.0 и 4.5.3, но это ничего не изменит

2. У меня есть следующее: Глава <link type=»text/css» rel=»stylesheet» href=» cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/… > <link type=» text=»» css»=»» rel=»stylesheet» href=»//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.css» /> Дно <script src=» cdn.jsdelivr.net/npm/vue@2.6.11″></script<>>