首頁 > 軟體

vue如何實現Toast輕提示

2022-04-09 19:00:28

vue實現Toast輕提示

首先建立一個toast元件

<template>
  <div class="context" v-show="isshow">
    <span class="tip">{{ text }}</span>
  </div>
</template>
<script>
export default {
  name: "Toast",
  props: {
    isshow: {
      type: Boolean,
    },
    text: {
      type: String,
    },
  },
  watch: {
    isshow(val) {
      if (val === true) {
        setTimeout(() => {
          this.isshow = false;
        }, 3000);
      }
    },
  },
};
</script>
<style lang="less" scoped>
.context {
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 100;
  display: flex;
  justify-content: center;
  align-items: center;
  .tip {
    background-color: rgba(40, 40, 40, 0.8);
    color: aliceblue;
    font-size: 0.6rem;
    padding: 0.2rem;
    border-radius: 0.1rem;
  }
}
</style>

在js檔案中引入元件

import Toast from "./Toast.vue";
let NewToast = {
  install: function (Vue) {
    //建立vue外掛,官方地址https://cn.vuejs.org/v2/guide/plugins.html
    let newToast = Vue.extend(Toast); //建立vue構造器,官方地址https://cn.vuejs.org/v2/api/#Vue-extend
    let toast = new newToast(); //建立範例
    document.body.appendChild(toast.$mount().$el); //掛載
    Vue.prototype.$Toast = function (text) {
      toast.isshow = true; // 傳入props
      toast.text = text; // 傳入props
    };
  },
};
export { NewToast };

在入口檔案中引入上面這個js檔案

import { NewToast } from "@/components/index.js";
Vue.use(NewToast);

下面就可以在view裡全域性使用了

but() {
    this.$Toast("Are you ok ?");
},

效果圖

這樣一個簡單的輕提示就好了,覺得樣式醜的話,可以自己調一下。

使用vant的Toast輕提示報錯

記錄一下今天使用vant中的Toast 輕提示,按照官方檔案中的方法去使用發現報錯使用不了。

檔案中是這樣寫的

Toast.success('成功文案');
Toast.fail('失敗文案');

main.js中參照vant後直接呼叫Toast報錯。

實際使用是這樣寫

this.$toast.success("成功文案");
this.$toast.fail("失敗文案");

和呼叫路由一樣需要this點出來。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。 


IT145.com E-mail:sddin#qq.com