vue 自定义插件 toast
程序员文章站
2024-03-05 14:26:18
...
toast/Toast.vue
<template>
<div class="toast" v-show="isShow">
{{text}}
</div>
</template>
<script>
export default {
name:'Toast',
data(){return{
text:'',
isShow:false
}},
methods:{
show(text, time=1500){
this.text = text
this.isShow = true
setTimeout(()=>{
this.isShow = false
},time)
}
}
}
</script>
<style scoped>
.toast{
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
padding:4px 10px;
background-color: rgba(0, 0, 0, .8);
color: #fff;
border-radius: 5px;
line-height: 16px;
font-size: 12px;
z-index: 9999;
}
</style>
toast/index.js 核心
import Toast from './Toast'
function install(Vue){
// document.body.appendChild(Toast.$el) // $el => undefined
// 1 创建组件构造器
let ToastConstructor = Vue.extend(Toast)
// 2 new 构造器 创建一个组件对象
let newToast = new ToastConstructor()
// 3 将组件对象手动挂载到某个元素上
newToast.$mount(document.createElement('div'))
// 4 newToast.$el 对应的 div
document.body.appendChild(newToast.$el)
Vue.prototype.$toast = newToast
};
export default {install}
mian.js
import toast from 'components/common/toast'
// 安装toast插件
Vue.use(toast) // 会执行 toast.install 方法 会传递 Vue 构造函数
使用
this.$toast.show(' 添加成功')
上一篇: 关于两个自定义控件的取值问题及接口的应用