java 单机接口限流处理方案
322
2022-06-06
<template> <div > <div > <div v-for="item in notices" :key="item.name"> <div >{{ item.content }}</div> </div> </div> </div > </template>
<script> //多个提示框命名 let seed = 0; function getUuid() { return 'alert_' + (seed++); } export default { data() { return { notices: []//多个提示框保存至数组 } }, methods:{ add(notice) { const name = getUuid();//获取当前提示框名称 //Object.assign 浅拷贝不会跳过那些值为 [null] 或 [undefined]的源对象 // Object.assign(target, ...sources);target: 目标对象,sources:源对象 let _notice = Object.assign({ name: name }, notice); //将当前提示框标签保存到notices this.notices.push(_notice); // 定时移除,单位:秒 const time= notice.time|| 1.5; //1.5s后调用移除方法 setTimeout(() => { this.remove(name); }, time* 1000); }, remove(name) { const notices = this.notices; for (let i = 0; i < notices.length; i++) { if (notices[i].name === name) { this.notices.splice(i, 1); break; } } } } } </script>
<style lang="scss"> </style>
import Vue from 'vue' import Alter from '/components/Alter/Alter.vue' //Alter添加新属性,newInstance是个函数需求参数为properties Alter.newInstance=properties=>{ const props=properties || {}; //创建一个Vue组件对象 const Instance=new Vue({ data:props, render(h){ return h(Alter,{ props:props }) } }); //等待接口调用的时候在实例化组件,避免进入页面就直接挂载到body上 const component=Instance.$mount(); //实例化一个组件,然后挂载到body上 document.body.appendChild(component.$el); //通过闭包维护alter组件的引用 const alter=Instance.$children[0]; return{ //Alter组件对外暴露的两个方法 add(noticeProps){ alter.add(noticeProps); }, remove(name){ alter.remove(name); } } } //提示单例 let messageInstance; function getMessageInstance(){ messageInstance=messageInstance || Alter.newInstance(); return messageInstance; } //定义函数实现 function notice({time='',content=''}){ let instance=getMessageInstance(); instance.add({ time:1.5, content:'' }) } //公布方法 export default{ info(options){ return notice(options); } }
import alert from './alert.js' // 挂载到Vue原型上 Vue.prototype.$Alert = alert // 然后在组件中使用 this.$Alert.info({time: 1.5, content: '提示'})
在实际开发中一般有两种封装vue组件的方法:一种就是常用的的通过props父组件传值给子组件的方法:
还有一种就是通过调用api的形式,下面例子是本人在实际项目中封装的一个自定义图标的弹窗组件
首先实现组件的UI页面(css部分截图不完整)
在vue文件的同目录下新建alertTips.js文件
页面中调用方法:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~