上海千语创想科技有限公司
 175-2108-6175
网站建设资讯详细

vue组件详解

日期:2022-12-01  作者:千语创想  浏览:3313

vue组件的定义

组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码.

vue组件是把页面(html代码,CSS代码)进行模块化


vue.js中创建组件有三个步骤:定义组件,注册组件以及使用组件


定义组件

方式1:先创建一个组件构造器,然后由组件构造器创建组件.如:var myCom =Vue.extend({})


方式2:使用Vue.component()直接创建组件。


Vue.component('组件名称,{}');{}相当于创建vue对象传入的选项参数

定义组件名的方式有两种

使用 kebab-case:使用 kebab-case (短横线分隔命名) 定义一个组件(kebab发音/kI'ba:b/)my-com     myCom     <my-com></my-com>     <myCom></myCom>


使用 PascalCase:(驼峰式命名) 定义一个组件

当使用 kebab-case (短横线分隔命名) 定义一个组件时,你也必须在引用这个自定义元素时使用 kebab-case,例如 <my-component-name>。当使用 PascalCase (驼峰式命名) 定义一个组件时,你在引用这个自定义元素时两种命名法都可以使用。也就是说 <my-component-name> 和 <MyComponentName> 都是可接受的。

组件的注册

组件注册需要注意的有五点:


1、data要写成函数,并且用return返回一个值,这样不同的调用才能互不影响


2、template后面跟的是飘号,就是Tab上面那个键


3、template后面的内容要写在一个大的div里面,不要分开多个div


4、props后面的是数组,因为有很多个prop


5、要保存成js文件


Vue.component("myson",{

data(){

return{

sonmsg:"hello son"

}

},

template:`

<div>

<p>子组件内容</p>

prop接收到的值:{{sonprop}}

</div>

`,

props:["sonprop"],

methods:{

sonclick(){

this.$emit("sonemit",this.sonmsg)

}

}

})

组件的使用

使用时只要注意一点就好,要先引用vue,再引用子组件


<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<script type="text/javascript" src="js/vue.js"></script>

<script type="text/javascript" src="00-组件-子.js"></script>

</head>

<body>

<div id="app">

<myson></myson>

</div>

 

<script type="text/javascript">

var vm = new Vue({

el:"#app",

data:{

parentmsg:"parentmsg to sonprop"

}

})

</script>

</body>

</html>

父传子

父传子比较简单,分成两步


1、在组件里定义prop


props:["sonprop"]

2、使用组件时,用定义的prop绑定父的值


<myson :sonprop="parentmsg"></myson>

父里面的值是这样的


data:{

parentmsg:"parentmsg to sonprop"

}

详细传递过程是这样的,看起来比较复杂,其实就上面说的两步

子传父

子组件给父传数值要通过方法来传递,父和子各定义一个方法,然后用一个中间方法来连接,记住这个中间方法的使用就行了,步骤详细分解开挺多的


1、在子组件的template的button里使用一个点击事件


<button @click="sonclick">按钮</button>

2、在子组件里定义上面使用的方法,触发一个中间方法并传递数据


sonclick(){

this.$emit("sonemit",this.sonmsg)

}

3、父使用子组件时,用中间方法绑定自己的方法


<myson @sonemit="parentclick"></myson>

4、在父的方法里接收数据,这里p可以写成任意字符


        parentclick(p){

vm.parentmsg=p;

}


五、插槽

1、加入插槽,插槽就是在组件里留一个空位,使用组件时可以插入任意东西


在子组件某个位置定义:<slot></slot>


使用组件时就可以在该位置添加任意标签


2、加入多个插槽时,要为每个插槽命名,使用时每个slot要放在一个template里面


定义多个插槽


template:`

<div>

<p>子组件内容:{{sonmsg}}</p>

<p>分隔线111111111111111</p>

<slot name="a1"></slot>

<p>分隔线2222222</p>

<slot name="a2"></slot>

<p>分隔线333333333</p>

</div>

`,

使用多个插槽,一个template放一个slot


                <template slot="a1">

<button>按钮a1</button>

</template>

<template slot="a2">

<button>按钮a2</button>

</template>

六、子组件给插槽传值

1、在子组件template里定义中间数据emitmsg,名字可以随便


<slot name="a1" :emitmsg="sonmsg"></slot>

2、在父组件里用res接收,不管是多少个子组件,都是用res接收,res是结果集,如果有多个slot的话,数据都会在里面


<template slot="a1" slot-scope="res">

{{res.emitmsg}}

</template>




转载请注明来自:https://www.qianyuthink.com/news/7300.html

填写您的项目需求给我们

或者直接拨打 7×12小时一对一咨询电话

175 2108 6175

请填写需求信息,我们会在10分钟内与您取得联系

请认真填写需求信息,我们会在10分钟内与您取得联系

×
客服二维码
咨询技术总监
175-2108-6175
客服二维码
技术总监微信
客服二维码