Vue入门(七)

Vue中的组件——组件与实例的关系

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

	<body>
		<div id="root">
			<div>
				<input v-model="inputValue" />
				<button @click="handleSubmit">提交</button>
			</div>
			<ul>
				<todo-item v-for="(item, index) of list" :key="index" :content="item"></todo-item>
			</ul>
		</div>

		<script>
			Vue.component('todo-item', {
				props: ['content'],
				template: '<li>{{content}}</li>'
			})

			new Vue({
				el: "#root",
				data: {
					inputValue: '',
					list: []
				},
				methods: {
					handleSubmit: function() {
						this.list.push(this.inputValue)
						this.inputValue = ''
					}
				}
			})
		</script>
	</body>

        因为组件是可复用的 Vue 实例(每用一次组件,就会有一个它的新实例被创建。),所以它们与 new Vue 接收相同的选项,例如 datacomputedwatchmethods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。 

		<script>
			Vue.component('todo-item', {
				props: ['content'], 
				template: '<li @click="handleClick">{{content}}</li>',
				methods: {
					handleClick: function() {
						alert('clicked')
					}
				}
			})
		</script>

效果图:

 

        一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝。如果 Vue 没有这条规则,重复使用组件时可能会影响到其它所有实例 

        添加下面的代码:

        可以发现效果如下:

        如果 data 部分代码写成 data: {title: "每个组件都是vue实例"},那么不会有效果:

         报错

		<script>
			Vue.component('todo-item', {
				props: ['content'],
				data: function() {
					return {
						title: "每个组件都是vue实例"
					}
				},
				template: '<li @click="handleClick" :title="title">{{content}}</li>',
				methods: {
					handleClick: function() {
						alert('clicked')
					}
				}
			})

			new Vue({
				el: "#root",
				data: {
					inputValue: '',
					list: []
				},
				methods: {
					handleSubmit: function() {
						this.list.push(this.inputValue)
						this.inputValue = ''
					}
				}
			})
		</script>

视频学习地址: 课程介绍,vue2.5入门 教程-慕课网 (imooc.com)  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值