vue之创建组建

vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来。组件的使用更使我们的项目解耦合。更加符合vue的设计思想MVVM。

那接下来就跟我看一下如何在一个Vue实例中使用组件吧!

这里有一个Vue组件的示例:

    Vue.component('Vheader',{
            data:function(){
                return {
                   
                }
            },
            template:`<div class="header">
                        <div class="w">
                            <div class="w-l">
                                <img  src="./logo.png"/>
                            </div>
                            <div class="w-r">
                                <button>登录</button><button>注册</button>
                                
                            </div>
                        </div>
                    </div>`
        })

 

组件是可复用的Vue实例,并且带有一个名字:在这个例子中是 <Vheader>。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用:

<div id="app">
        <Vheader></Vheader>
</div>

 

var app = new Vue({
       el:'#app',
       data:{

       }
 })

效果显示:

因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项

组件的复用 

    <div id="app">
        <Vheader></Vheader>
        <br>
        <Vheader></Vheader>
        <br>
        <Vheader></Vheader>
    </div>

效果显示:

给Vheader组件中添加一个按钮,绑定数据属性count,然后你会发现点击按钮时,每个组件都会各自独立维护它的 count。因为你每用一次组件,就会有一个它的新实例被创建。

 

在创建组件过程中第一个参数是组件的名字,第二个参数是跟new Vue实例一样的options。跟实例对象不同的是有两点:

关于组件名的起名:https://cn.vuejs.org/v2/guide/components-registration.html

1、组件中没有el,因为el仅仅的是绑定Vue的根元素。

2、data属性不再是返回对象,而是返回一个函数。而且必须返回一个函数。

 

ok。介绍到这里相信大家都明白了组件的创建了。

那么通常一个应用会一颗嵌套的组件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue拖拽排序组件可以通过封装实现复用和方便使用。以下是一个简单的Vue拖拽排序组件的实现: 1. 安装vue-draggable插件 首先,我们需要安装Vue.js的拖拽排序插件`vue-draggable`,它提供了`draggable`和`sortable`两个组件。 ``` npm install vuedraggable --save ``` 2. 创建Draggable.vue组件 在Vue项目创建一个Draggable.vue组件,用于封装拖拽排序功能。该组件包含以下代码: ```html <template> <draggable v-model="list" :options="options"> <slot></slot> </draggable> </template> <script> import draggable from 'vuedraggable'; export default { name: 'Draggable', components: { draggable }, props: { list: { type: Array, default: function() { return []; }, }, options: { type: Object, default: function() { return {}; }, }, }, }; </script> ``` 在这个组件,我们将`draggable`组件作为子组件,并使用`slot`来插入要排序的元素。我们还定义了两个属性:`list`和`options`。`list`属性是我们要排序的元素数组,`options`属性是传递给`draggable`组件的选项。 3. 在父组件使用Draggable组件 在父组件,我们可以使用`<draggable>`标签来包含要排序的元素,就像这样: ```html <template> <div> <draggable :list="items" :options="options"> <div v-for="(item, index) in items" :key="index"> {{ item }} </div> </draggable> </div> </template> <script> import Draggable from './Draggable.vue'; export default { name: 'App', components: { Draggable }, data() { return { items: ['Item 1', 'Item 2', 'Item 3'], options: { animation: 200, }, }; }, }; </script> ``` 在这个例子,我们将`items`数组传递给`<draggable>`组件的`list`属性,将动画速度设置为200毫秒。 4. 定制Draggable组件 我们还可以通过添加一些自定义代码来进一步定制`Draggable`组件的行为。例如,我们可以添加一个事件处理程序来监听排序后的结果: ```html <template> <draggable v-model="list" :options="options" @end="onEnd"> <slot></slot> </draggable> </template> <script> import draggable from 'vuedraggable'; export default { name: 'Draggable', components: { draggable }, props: { list: { type: Array, default: function() { return []; }, }, options: { type: Object, default: function() { return {}; }, }, }, methods: { onEnd: function(evt) { this.$emit('onEnd', evt); }, }, }; </script> ``` 在这个例子,我们添加了一个`onEnd`方法,当拖拽排序完成时,会触发`end`事件并调用该方法。我们还使用`$emit`方法将事件传递给父组件。 5. 在父组件监听Draggable组件的事件 最后,在父组件,我们可以通过添加一个相应的事件处理程序来监听`onEnd`事件: ```html <template> <div> <draggable :list="items" :options="options" @onEnd="onEnd"> <div v-for="(item, index) in items" :key="index"> {{ item }} </div> </draggable> </div> </template> <script> import Draggable from './Draggable.vue'; export default { name: 'App', components: { Draggable }, data() { return { items: ['Item 1', 'Item 2', 'Item 3'], options: { animation: 200, }, }; }, methods: { onEnd: function(evt) { console.log('Sorted item:', evt.item); console.log('New items order:', this.items); }, }, }; </script> ``` 在这个例子,我们添加了一个`onEnd`方法,当`onEnd`事件发生时,会输出排序后的元素和新的元素顺序。 这就是一个简单的Vue拖拽排序组件的实现。通过封装,我们可以轻松地将这个组件用于不同的应用场景,并实现代码重用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值