国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Vue自定義全局Toast和Loading

RyanQ / 741人閱讀

摘要:如果我們的項目中沒有用到任何框架的話,為了更好的用戶體驗,肯定會用到和。那么我們就自定義這兩個組件吧。組件首先,在下新建文件夾,存放我們的和兩個文件當然文件的具體位置你可以自行安排。最后,只需在要用的地方

如果我們的Vue項目中沒有用到任何UI框架的話,為了更好的用戶體驗,肯定會用到loading和toast。那么我們就自定義這兩個組件吧。

1、Toast組件

首先,在common下新建global文件夾,存放我們的toast.vue和toast.js兩個文件(當然文件的具體位置你可以自行安排)。

(1). toast.vue






(2). toast.js

import Vue from "Vue"
import ToastComponent from "./Toast.vue"

const Toast = {}
let showToast = false // 存儲loading顯示狀態
let toastNode = null // 存儲loading節點元素
const ToastConstructor = Vue.extend(ToastComponent)

Toast.install = function (Vue, options) {
  // 參數
  var opt = {
    duration: "1200"
  }
  for (var property in options) {
    opt[property] = options[property]
  }
  Vue.prototype.$toast = function (tips, type) {
    if (type === "hide") {
      toastNode.isShowToast = showToast = false
    } else {
      if (showToast) {
        // 如果toast還在,則不再執行
        return
      }
      toastNode = new ToastConstructor({
        data: {
          isShowToast: showToast,
          content: tips
        }
      })
      toastNode.$mount() // 掛在實例,為了獲取下面的toastNode.$el
      document.body.appendChild(toastNode.$el)
      toastNode.isShowToast = showToast = true
      setTimeout(function () {
        toastNode.isShowToast = showToast = false
      }, opt.duration)
    }
  };

  ["show", "hide"].forEach(function (type) {
    Vue.prototype.$toast[type] = function (tips) {
      return Vue.prototype.$toast(tips, type)
    }
  })
}

export default Toast

然后,我們需要把寫好的組件在/src/main.js中引用一下。

import Toast from "./components/common/global/toast"

Vue.use(Toast)

最后,怎么使用呢?只需在要用的地方this.$toast.show("hello world")

2、Loading組件

loading組件只需要照著toast組件搬過來,稍微改下就可以了。

首先,在common下新建global文件夾,存放我們的loading.vue和loading.js兩個文件。

(1). loading.vue






(2). loading.js

import Vue from "Vue"
import LoadingComponent from "./Loading.vue"

const Loading = {}
let showLoading = false // 存儲loading顯示狀態
let loadingNode = null // 存儲loading節點元素
const LoadingConstructor = Vue.extend(LoadingComponent)

Loading.install = function (Vue) {
  Vue.prototype.$loading = function (tips, type) {
    if (type === "hide") {
      loadingNode.isShowLoading = showLoading = false
    } else {
      if (showLoading) {
        // 如果loading還在,則不再執行
        return
      }
      loadingNode = new LoadingConstructor({
        data: {
          isShowLoading: showLoading,
          content: tips
        }
      })
      loadingNode.$mount() // 掛在實例,為了獲取下面的loadingNode.$el
      document.body.appendChild(loadingNode.$el)
      loadingNode.isShowLoading = showLoading = true
    }
  };

  ["show", "hide"].forEach(function (type) {
    Vue.prototype.$loading[type] = function (tips) {
      return Vue.prototype.$loading(tips, type)
    }
  })
}

export default Loading

然后,在/src/main.js中引用一下loading組件。

import Loading from "./components/common/global/loading"

Vue.use(Loading)

最后,只需在要用的地方this.$loading.show("hello world")、 this.$loading.hide()

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103617.html

相關文章

  • Vue.extend用法(主要用于需要 動態渲染的組件,或者類似于window.alert() 提示

    摘要:一簡單的使用主要用于需要動態渲染的組件,或者類似于提示組件注意創建的是一個組件構造器,而不是一個具體的組件實例屬于的全局,在實際業務開發中我們很少使用,因為相比常用的寫法使用步驟要更加繁瑣一些。 最近在重構公司的項目,有些組件想要封裝的更靈活,例如toast、loading、messageBox等彈窗組件,模仿了mint-ui封裝此類組件的方式封裝了自己的彈窗組件; mint-UI的t...

    masturbator 評論0 收藏0
  • vue2實踐(持續更新)

    摘要:記錄一些小技巧和踩過的坑由于本篇文章內容太多,導致編輯器有點卡,所以新開辟了一篇實踐二,后續再這里更新。組件的生命周期函數是在標簽里的數據發生變化時候觸發數據可能更新了,但是沒有綁定到上面的話,不會調用鉤子函數。 記錄一些小技巧和踩過的坑 由于本篇文章內容太多,導致SF編輯器有點卡,所以新開辟了一篇 vue2實踐(二),后續再這里更新。 1. props 帶不帶冒號的區別 ...

    n7then 評論0 收藏0
  • 【Geek議題】合理的VueSPA架構討論(上)

    摘要:下面也是以模塊的模塊集為例,可以發現和路由有一些不同就是這里為了防止模塊跟全局耦合,運用函數式編程思想類似于依賴注入,將全局的實例作為函數參數傳入,再返回出一個包含的對象,這個導出的對象將會被以模塊名命名,合并到全局的集中。 前言 web前端發展到現代,已經不再是嚴格意義上的后端MVC的V層,它越來越向類似客戶端開發的方向發展,已獨立擁有了自己的MVVM設計模型。前后端的分離也使前端人...

    worldligang 評論0 收藏0
  • 【Geek議題】合理的VueSPA架構討論(上)

    摘要:下面也是以模塊的模塊集為例,可以發現和路由有一些不同就是這里為了防止模塊跟全局耦合,運用函數式編程思想類似于依賴注入,將全局的實例作為函數參數傳入,再返回出一個包含的對象,這個導出的對象將會被以模塊名命名,合并到全局的集中。 前言 web前端發展到現代,已經不再是嚴格意義上的后端MVC的V層,它越來越向類似客戶端開發的方向發展,已獨立擁有了自己的MVVM設計模型。前后端的分離也使前端人...

    pepperwang 評論0 收藏0
  • vue 在移動端體驗上的優化解決方案

    摘要:去年年底自己搭了一個在移動端的開發框架,感覺體驗不是很好。路由懶加載首頁終于寫完了,以上這些就是我在移動端體驗優化的實戰。去年年底自己搭了一個vue在移動端的開發框架,感覺體驗不是很好。上個星期又要做移動端的項目了。所以我花了兩天時間對之前的那個開發框架做了以下優化 自定義vuex-plugins-loading 路由切換動畫 + keep alive 動態管理緩存組件 better-sc...

    godlong_X 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<