vue 组件封装

优点:

1.提高代码复用性和开发效率;

2.减少代码冗余;


组件用法:

1. 引用

import FormDialog from '@/components/dialog/formDialog'

2. 注册

components: {
    FormDialog
},

3. 使用

 <FormDialog> </FormDialog>

组件要素:

1.属性:props属性(父传子:props:{data,type}),inheritAttrs属性(组件的根元素是否继承特性

//子组件接收   
 props: {
        // 基础类型检测 (`null` 意思是任何类型都可以)
        propA: Number,
        // 多种类型
        propB: [String, Number],
        // 必传且是字符串
        propC: {
            type: String,
            required: true, //必须传
        },
        // 数字,有默认值
        propD: {
            type: Number,
            default: 100, //default默认值,默认是100
        },
        // 数组/对象的默认值应当由一个工厂函数返回
        propE: {
            type: Object,
            default: function () {
                return { message: 'hello' };
            },
        },
        // 自定义验证函数
        propF: {
            validator: function (value) {
                return value > 10;
            },
        },
    },

2.事件:event(子组件触发父组件事件)

        优点:降低耦合性;防止各自的数据被污染

// 子组件方法:触发父组件方法,并传递参数data到父组件
handleSubmit(data){
    this.$emit('submitToParent', data)
}
// 父组件调用子组件
<child-component @submitToParent="parentSubmit"></child-component>
... ...
// 父组件中被触发的方法,接受到子组件传来的参数
parentSubmit(data){
    // 父组件的逻辑处理
}

3.插槽:slot(在子组件内添加新的内容)

子组件
<div class="child-btn">
    <!-- 具名插槽 -->
    <slot name="button"></slot>
    <!-- 匿名插槽(每个组件只能有一个) -->
    <slot></slot>
</div>
 
父组件
<child>
    <!-- 对应子组件中button的插槽 -->
    <button slot="button">slot按钮</button>
</child>

4. 子组件改变父组件的数据(子组件中修改父组件传来的值,父组件也会同步改变)

// 父组件要props传递给子组件的数据
data:{
    info:'父组件信息'
}
 
// 子组件
 <template id="lemon">
    <div>
        //当子组件点击change按钮改变数据的时候,父组件也会同步改变
        <button @click="change">点我</button>
        <p>{{data.info}}</p>
    </div>
</template>
... 子组件中省略部分无关代码 ...
props:['data'],
methods:{
    change(){
        this.data.info = '我被点了'
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值