通过学习elementui编写自定义的vue组件

1:先来回顾一下vue组件的局部注册与全局注册

image

然后在另外一个组件HelloWorld.vue内进行局部注册;

image

我们也可以再main.js里进行全局注册;

image

2 : 使用Vue.use()

我们在开发过程中遇到大量需要反复使用的组件时都会进行全局注册,那么如何elementui一样Vue.use()来注册组件,请回顾 文档 对插件的扩展 或者戳 这里

我们建立一个文件夹存放组件,写一个aler组件

image

然后在 index.js里配置下这个组件的install

image

这样的话就可以在main.js 里面

import zkxAlert from '../componentLib/alert '

Vue.use(zkxAlert)

如何像elementui 一样 use(elementui) 就可以使用全部组件

image

在componentLib/index.js 内如上处理

3:使用 prop, 事件, slot 让组件变得灵活;

<template>
    <!--可以再这个地方添加动画效果-->
    <transition>
        <div  v-show="visible" class="z-alert" :class="typeClass">
            {{title}}
            <slot></slot>
            <span class="z-alert-close" v-show="closable" @click="close()">关闭</span>
        </div>
    </transition>
</template>

<script>
    export default{
        name:'zkxAlert',
        props:{
            //一个alert 组件 最基本的要有    标题   不同类型的提示   关闭事件
            title:{
                type: String,
                default: '',
                required: true
            },
            //type 会有 success warning error 三种类型
            type: {
                type: String,
                default: 'success'
            },
            //是否可以点击关闭  默认可以
            closable: {
                type: Boolean,
                default: true
            },
        },
        data() {
          return {
            visible: true
          };
        },
    
        methods: {
          close() {
            this.visible = false;
          }
        },
        computed:{
           //通过调用的type 来计算需要显示的class 
            typeClass(){
                return `z-alert--${this.type}`;
            }
        }
        
        
    }
</script>

<style scoped="scoped">
    .z-alert{
        width:1000px;
        /*height: 50px;*/
        line-height: 50px;
        margin: auto;
    }
    .z-alert-close{
        float:right;
        line-height: 50px;
    }
    .z-alert--success{
        background: #f0f9eb;
        color:cadetblue;
    }
    .z-alert--warning{
        background: #fdf6ec;
        color:#e6a28b;
    }
    .z-alert--error{
        background: #fef0f0;
        color:#f681b0;
    }
</style>

下面我们use组件之后,调用看下

<zkxAlert title="小猪佩奇身上纹" :closable='false'></zkxAlert>
    <zkxAlert title="掌声送给社会人" :closable='false' type='error'></zkxAlert>
    <zkxAlert title="马上下班" type='warning'>周末愉快</zkxAlert>
image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8月22日,今天是球球的第185天。昨天给儿子打了防疫针,在王越家待了一天,每次见到小五,我都觉得人家孩子生活的各...
    曦宝阅读 1,430评论 1 1
  • 期待了一个星期,终于能见到爸爸妈妈了。能和她们待在一起,很满足了,比什么都好,虽然坐长途车辛苦,但只要想到可以见到...
    希雅的花园阅读 1,131评论 0 0
  • 我要快乐读书 分享知识 004/100 O 实践 第一次参加拆书,提前收到了书----《结构思考力》,阅读后,...
    笑笑1068阅读 1,768评论 4 3
  • 脑子生锈了吗?你多久没有用过大脑认真思考过问题了!去练就你脑子的灵活力;你多久没有看过一本技术书或者是一些好的博客...
    simple2simple阅读 2,880评论 0 0