摘要:如果我們的項(xiàng)目中沒有用到任何框架的話,為了更好的用戶體驗(yàn),肯定會(huì)用到和。那么我們就自定義這兩個(gè)組件吧。組件首先,在下新建文件夾,存放我們的和兩個(gè)文件當(dāng)然文件的具體位置你可以自行安排。最后,只需在要用的地方
如果我們的Vue項(xiàng)目中沒有用到任何UI框架的話,為了更好的用戶體驗(yàn),肯定會(huì)用到loading和toast。那么我們就自定義這兩個(gè)組件吧。
1、Toast組件
首先,在common下新建global文件夾,存放我們的toast.vue和toast.js兩個(gè)文件(當(dāng)然文件的具體位置你可以自行安排)。
(1). toast.vue
{content}
(2). toast.js
import Vue from "Vue" import ToastComponent from "./Toast.vue" const Toast = {} let showToast = false // 存儲(chǔ)loading顯示狀態(tài) let toastNode = null // 存儲(chǔ)loading節(jié)點(diǎn)元素 const ToastConstructor = Vue.extend(ToastComponent) Toast.install = function (Vue, options) { // 參數(shù) 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還在,則不再執(zhí)行 return } toastNode = new ToastConstructor({ data: { isShowToast: showToast, content: tips } }) toastNode.$mount() // 掛在實(shí)例,為了獲取下面的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兩個(gè)文件。
(1). loading.vue
{content}
(2). loading.js
import Vue from "Vue" import LoadingComponent from "./Loading.vue" const Loading = {} let showLoading = false // 存儲(chǔ)loading顯示狀態(tài) let loadingNode = null // 存儲(chǔ)loading節(jié)點(diǎn)元素 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還在,則不再執(zhí)行 return } loadingNode = new LoadingConstructor({ data: { isShowLoading: showLoading, content: tips } }) loadingNode.$mount() // 掛在實(shí)例,為了獲取下面的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()
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103617.html
摘要:一簡單的使用主要用于需要?jiǎng)討B(tài)渲染的組件,或者類似于提示組件注意創(chuàng)建的是一個(gè)組件構(gòu)造器,而不是一個(gè)具體的組件實(shí)例屬于的全局,在實(shí)際業(yè)務(wù)開發(fā)中我們很少使用,因?yàn)橄啾瘸S玫膶懛ㄊ褂貌襟E要更加繁瑣一些。 最近在重構(gòu)公司的項(xiàng)目,有些組件想要封裝的更靈活,例如toast、loading、messageBox等彈窗組件,模仿了mint-ui封裝此類組件的方式封裝了自己的彈窗組件; mint-UI的t...
摘要:記錄一些小技巧和踩過的坑由于本篇文章內(nèi)容太多,導(dǎo)致編輯器有點(diǎn)卡,所以新開辟了一篇實(shí)踐二,后續(xù)再這里更新。組件的生命周期函數(shù)是在標(biāo)簽里的數(shù)據(jù)發(fā)生變化時(shí)候觸發(fā)數(shù)據(jù)可能更新了,但是沒有綁定到上面的話,不會(huì)調(diào)用鉤子函數(shù)。 記錄一些小技巧和踩過的坑 由于本篇文章內(nèi)容太多,導(dǎo)致SF編輯器有點(diǎn)卡,所以新開辟了一篇 vue2實(shí)踐(二),后續(xù)再這里更新。 1. props 帶不帶冒號(hào)的區(qū)別 ...
摘要:下面也是以模塊的模塊集為例,可以發(fā)現(xiàn)和路由有一些不同就是這里為了防止模塊跟全局耦合,運(yùn)用函數(shù)式編程思想類似于依賴注入,將全局的實(shí)例作為函數(shù)參數(shù)傳入,再返回出一個(gè)包含的對象,這個(gè)導(dǎo)出的對象將會(huì)被以模塊名命名,合并到全局的集中。 前言 web前端發(fā)展到現(xiàn)代,已經(jīng)不再是嚴(yán)格意義上的后端MVC的V層,它越來越向類似客戶端開發(fā)的方向發(fā)展,已獨(dú)立擁有了自己的MVVM設(shè)計(jì)模型。前后端的分離也使前端人...
摘要:下面也是以模塊的模塊集為例,可以發(fā)現(xiàn)和路由有一些不同就是這里為了防止模塊跟全局耦合,運(yùn)用函數(shù)式編程思想類似于依賴注入,將全局的實(shí)例作為函數(shù)參數(shù)傳入,再返回出一個(gè)包含的對象,這個(gè)導(dǎo)出的對象將會(huì)被以模塊名命名,合并到全局的集中。 前言 web前端發(fā)展到現(xiàn)代,已經(jīng)不再是嚴(yán)格意義上的后端MVC的V層,它越來越向類似客戶端開發(fā)的方向發(fā)展,已獨(dú)立擁有了自己的MVVM設(shè)計(jì)模型。前后端的分離也使前端人...
摘要:去年年底自己搭了一個(gè)在移動(dòng)端的開發(fā)框架,感覺體驗(yàn)不是很好。路由懶加載首頁終于寫完了,以上這些就是我在移動(dòng)端體驗(yàn)優(yōu)化的實(shí)戰(zhàn)。去年年底自己搭了一個(gè)vue在移動(dòng)端的開發(fā)框架,感覺體驗(yàn)不是很好。上個(gè)星期又要做移動(dòng)端的項(xiàng)目了。所以我花了兩天時(shí)間對之前的那個(gè)開發(fā)框架做了以下優(yōu)化 自定義vuex-plugins-loading 路由切換動(dòng)畫 + keep alive 動(dòng)態(tài)管理緩存組件 better-sc...
閱讀 1220·2023-04-25 20:31
閱讀 3730·2021-10-14 09:42
閱讀 1502·2021-09-22 16:06
閱讀 2684·2021-09-10 10:50
閱讀 3536·2021-09-07 10:19
閱讀 1782·2019-08-30 15:53
閱讀 1180·2019-08-29 15:13
閱讀 2826·2019-08-29 13:20