46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import Vuex from 'vuex'
 | 
						||
export default function initToast(v) {
 | 
						||
	// 挂在store到全局Vue原型上
 | 
						||
	v.prototype.$toastStore = new Vuex.Store({
 | 
						||
		state: {
 | 
						||
			show: false,
 | 
						||
			icon: "success", //success:成功;fail:失败
 | 
						||
			title: "标题",
 | 
						||
			content: '内容',
 | 
						||
			success: null,
 | 
						||
		},
 | 
						||
		mutations: {
 | 
						||
			hideToast(state) {
 | 
						||
				// 小程序导航条页面控制
 | 
						||
				// #ifndef H5
 | 
						||
				if (state.hideTabBar) {
 | 
						||
					wx.showTabBar();
 | 
						||
				}
 | 
						||
				// #endif
 | 
						||
				state.show = false
 | 
						||
			},
 | 
						||
			showToast(state, data) {
 | 
						||
				state = Object.assign(state, data)
 | 
						||
				state.show = true
 | 
						||
				setTimeout(() => {
 | 
						||
					state.show = false
 | 
						||
					return state.success(state.icon)
 | 
						||
				}, 2000)
 | 
						||
			},
 | 
						||
		}
 | 
						||
	})
 | 
						||
	// 注册$showToast到Vue原型上,以方便全局调用
 | 
						||
	v.prototype.$showToast = function(option) {
 | 
						||
		if (typeof option === 'object') {
 | 
						||
			// #ifndef H5
 | 
						||
			if (option.hideTabBar) {
 | 
						||
				wx.hideTabBar();
 | 
						||
			}
 | 
						||
			// #endif
 | 
						||
 | 
						||
			v.prototype.$toastStore.commit('showToast', option)
 | 
						||
		} else {
 | 
						||
			throw "配置项必须为对象传入的值为:" + typeof option;
 | 
						||
		}
 | 
						||
	}
 | 
						||
} |