首页 > 其他 > 详细

Vue学习-------------(17)组件进阶使用

时间:2021-03-17 14:50:36      阅读:24      评论:0      收藏:0      [点我收藏+]

组件数据的存放

  • data属性必须是一个函数
  • 而且这个函数返回一个对象,对象内部保存着数据

将计数器封装为组件

<!DOCTYPE HTML>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Untitled</title>
</head>
<body>
	<div id="app">
		<cpn></cpn>
	</div>

	<template id="ccc">
		<div>
			<h2>当前计数:{{counter}}</h2>
			<button @click="increment">+</button>
			<button @click="decrement">-</button>
		</div>
	</template>
	
	<script src="../js/vue.js"></script>
	<script>
		Vue.compotent(‘ccc‘ ,{
			template: ‘#cpn‘,
			data() {
				return{
					counter: 0
				}
			},
			methods: {
				increment() {
					this.counter++
				},
				decrement() {
					this.counter--
				}
			}
		})
		//root组件
		const app = new Vue({
			el: ‘#app‘ ,
		})
</body>
</html>

组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的,基于这一理念,组件每复用一次,data数据就应该被复制一次,之后,当某一处复用的地方组件内data数据被改变时,其他复用地方组件的data数据不受影响。

 

父子组件的通信:

  • 通过props向子组件传递数据
  • 通过事件向父组件发送消息

Vue实例和子组件的通信与父组件和子组件的通信过程是一样的

props用法:

  • 在组件中,使用选项props来声明需要从父组件接收的数据
  • props的值有两种方式:
    • 方式一:字符串数组,数组中的字符串就是传递时的名称
    • 方式二:对象,对象可以设置传递时的类型,也可以设置默认值等
<!DOCTYPE HTML>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Untitled</title>
</head>
<body>
	<div id="app">
		<cpn :cmovies="movies" :cmessage="message"></cpn>
	</div>

	<template id="ccc">
		<div>
			<h2>{{cmovies}}</h2>
		</div>
	</template>
	
	<script src="../js/vue.js"></script>
	<script>
		const cpn = {
			template: ‘#cpn‘,
			//数组写法:
			//props: [‘cmovies‘, ‘cmessage‘],
			//对象写法:
			props: {
				//类型限制:
				//cmovies: Array ,
				//cmessage: String,
				//设置默认值:
				cmessage: {
					type: String,
					default: ‘aaaaaaaaaaaa‘,
					required: true    //加上这个属性就必须给cmessage传值
				}
				//类型是对象或者数组时,默认值必须是一个函数
				cmovies: {
					type: Array,
					default() {
						return []
					}
				}
			},
			data() {
				return{
				}
			},
			methods: {
			}
		})
		//root组件
		const app = new Vue({
			el: ‘#app‘ ,
			data: {
				movies: [‘海贼王‘, ‘海尔兄弟‘],
				message: ‘你好啊‘
			},
			compotents: {
				cpn        //字面量增强写法
			}
		})
</body>
</html>

  

 

Vue学习-------------(17)组件进阶使用

原文:https://www.cnblogs.com/tang321/p/14548552.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!