Vue学习笔记(四)

一:组件
  在大型应用开发的时候,页面可以划分成很多部分。往往不同的页面,会有相同的部分。但是如果每个页面都独自开发,这无疑增加了开发的成本。所以会把页面的各个部分拆分成独立的组件,然后在不同页面就可以共享这些组件,避免重复开发。
1.创建组件
  组件是根据一个普通的配置对象创建的,所以要开发一个组件,只需要写一个配置对象即可,该对象和vue实例的配置几乎是一样的。

Var myComp={
	data(){
		Return{
		}
	},
	computed:{
	},
	Methods:{
	}
	Template:``
}

和vue实例的区别:
  无el属性(原因:不与页面的元素绑定,为了组件的复用);
  data必须是一个函数,该函数返回的对象作为数据(这点很重要);
  由于没有el配置,组建的虚拟dom树必须定义在template或者render中。
2.注册组件
  全局注册:一但全局注册了一个组件,整个应用任何地方都可以使用该组件。
  注册方式:Vue.component(‘MyComp’,MyComp);
  参数1:组件名称,将来在模板中使用该组件时,会使用该名称。
  参数2:组件对象
  局部注册(常用):
  一旦全局注册,就意味着即便以后你不再使用这个组件,它依然会随着Vue的加载而加载。因此,对于一些并不频繁使用的组件,会采用局部注册。注册方式是在要使用的组件或者组建的实例中增加一个配置。

Components:{
	MyComp:MyComp
	//属性名为组件名称,模板中使用该名称
	//属性值为组件配置对象。
	MyComp//推荐使用ES6写法
}

3.使用组件
  在模板中使用组件,把组件名当做html元素使用即可。
但注意:
  1.组件必须有结束<MyComp/>;
  2.组件的命名:短横线命名法(<my-comp/>)或者大驼峰命名法(<MyComp/>)。
4.组件树
  组件之间可以相互嵌套使用。
二:组件通信
1.父向子传递props
  可以在子组件中申明可以接受哪些属性props:[“p1”,’p2’,’p3’]。
  使用组件时会创建组件的实例,而组件的属性会被提取到vue的实例中,因此可以在模板中使用。注意:在子组件中,属性是只读的,绝不可以更改,这叫做单向数据流。
子组件:

Vue.component("biaoti",{
 // 直接使用props接收到的属性来渲染页面 
 template:'<h1>{{title}}</h1>',
 props:[title] 
 // 通过props来接收一个父组件传递的title属性 
})

父组件:

<div id="app">
	//在父组件中使用子组件
	<biaoti :title="msg"></biaoti>
</div>
new Vue({ 
	el:"#app", 
	data:{
		msg: "向子组件传递的标题变量" 
	} 
});
//这里用到了绑定属性:title,绑定一个变量

2.子向父通信
  上面说到:在子组件中,属性是只读的,绝不可以更改,这叫做单向数据流。子组件接收到父组件属性后,默认是不允许修改的,怎么办?既然只有父组件能修改,那么修改的方法一定是放在父组件中。
  vue提供了一个内置的this.$emit函数,用来调用父组件绑定的函数。可以通过v-on指令将父组件的函数绑定到子组件上:
父组件:

<div id="app"> 
	<h2>num:{{num}}</h2> 
	<!--此处引用子组件@plus --> 
	<counter @plus="numPlus" :snum="num"></counter> 
</div>
var app = new Vue({ 
	el:"#app", 
	data:{
		num:0 
	},
	methods:{ 
		//父组件中定义操作num的方法 
		numPlus(){
			this.num++; 
		}
	} 
});

子组件:

//定义子组件 
const counter = {
	template: ` <div><button @click="incrNum">+</button></div> `,
	props:["snum"],
	methods: {
		//点击子组件调用的方法 
		incrNum(){
			//通过$emit调用父组件绑定的函数
			return this.$emit("plus"); 
		} 
	}
};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值