Vue全局组件和局部组件

Vue全局组件和局部组件、父传子;子传父

Java中万物皆对象,Vue中万物皆组件

组件(Component)是 Vue.js 最强大的功能之一。

组件可以扩展 HTML 元素,封装可重用的代码。

Vue的组件化设计思想借鉴了Java的面向对象思想。Java认为万物皆对象,在Vue中,万物皆组件。也就是说,在实际的vue项目中,以及使用了Vue框架的项目中,Vue的对象都会以组件的形式出现,能被反复使用。要想实现组件化,需要在页面中注册组件:关于注册的方式有两种,分别是全局注册和本地注册。

全局组件和局部组件都是在Vue中的Components包下,创建一个名为 组件名.vue的文件

**全局组件: **可以被多个vue 实例使用
**局部组件:**只能被当前声明的vue实例使用

全局组件:

步骤:

1、创建全局组件,布局;
2、声明全局组件;
3、在Vue 实例中 使用全局组件

1、创建全局组件,布局:

<template>
    <div>
        <h1>MyQuanJuComponent</h1> 

</div>

</template>

<script>     //注意如果<script>里面有set  up 就删去,否则就会出错
export default {
    name:"MyQuanJuComponent"   //给全局组件创建一个名字,后面使用就是用这个名字当作标签
    data(){
    return {

		}
	}
}
</script>

2、声明组件 (因为是全局组件所以要在main.js中声明)

在main.js中

`//导入组件`
import MyQuanJuComponent from "./components/MyQuanJuComponent"
//声明全局组件
Vue.component("MyQuanJuComponent",MyQuanJuComponent)     //第一个参数是id,就是export中的name


3、在Vue实例中使用全局组件 (就是在App.vue中使用全局组件)

<MyQuanJuComponent></MyQuanJuComponent>  //这里的标签名就是创建全局组件中的name


局部组件

步骤:

1、创建局部组件、布局

2、声明局部组件

3、使用局部组件

1、创建局部组件

<template>
    <h1>
        myjubuComponent
    </h1>
</template>
<script>
export default {
    name:"MyJuBuComponent",
    data(){
        return {

  		}
	}
}
</script>

2、声明、导入局部组件

因为是局部组件,所以在使用局部组件的vue中导入和引用

这里是在App.vue中导入和声明

//导入局部组件
import MyJuBuComponent  from  "./components/MyJuBuComponent"



export  default {

name:"App",
components:{
		//声明局部组件  (写组件的name)
	}

}


父组件向子组件传值

通过子组件的props部分,来指明可以接收的参数,父组件通过在标签中写明参数的键值对来传递参数。

props是表示一个组件的参数部分,那么props的写法有两种:

	1)props:[参数列表]

	比如: props:['MyProp1','MyProp2',...]

	2)props:{参数名1:{type:String,required:true,default:'XX'},参数名2:{...}}

1、首先在子组件中加入可以接受的参数(形参)

有两种方式:

props:[‘参数1’,‘参数2’]
props:{
参数1:{
type:String,
required:true
default:‘默认内容’   //可写可不写

},
参数2:{
type:String,
required:true
default:‘默认内容’   //可写可不写

}

}

2、在父组件中写入参数

export default{
data(){
return {
父参数1:‘值’,
父参数:‘值’,
		}

	}
}

3、在父组件中的子组件的标签内,进行绑定。

 <子组件name  v-bind:参数1(子组件声明的形参)="父参数1" :参数2="父参数2"></子组件name>
 

4、在子组件中div块内显示参数

<h1>{{参数1}},{{参数2}}</h1>   //这里面的参数1、2是子组件自己定义的形参的名字,也就是绑定“=”左边的名字   运用插值表达式展现

子组件向父组件传值

1、先在子组件里面写一个参数,并把它定义为函数类型(也就是方法类型)

代码如下:

props:{
  zichuanfu:{
    type:Function
  }
}

2、写一个子组件的数据,就是要传过去的参数

代码如下:

data(){
  return {
    info:"我是子组件的数据,是儿子!"
  }
},

注意:data(){} 等同于data:function(){}

3、在子组件中写组件的内容,(按钮并且要绑定你写的那个方法。还要把要传过去的数据,当作参数传过去。)

代码如下:

<template>
  <div>
    <h1>子组件Component</h1>
    <button v-on:click="zichuanfu(info)">子传父</button>
  </div>

</template>

4、父组件接收参数(注意父组件接收参数一定要先导入把组件导入父组件中,这样才能调用子组件。)

代码如下:

import Component1 from "./components/Component1.vue";    //导入
export default {        //声明
  name: 'App',
  components: {
    Component1
    }

5、在负组件中写方法,对应子组件的方法(就是和子组件的方法进行绑定。)

代码如下:

methods: {
    fatherzichuanfu:function (val){  // todo val就是子组件的数据
      alert("子向父传值:"+val)
    }
  },

6、使用子组件,并且父组件的方法要和子组件的方法进行绑定!!!

代码如下:

<h1>子组件向父组件传值</h1>
<Component1 v-bind:zichuanfu="fatherzichuanfu"></Component1>   <!--  等号左边是子组件的方法,右边是父组件的方法!-->
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值