自我总结55

组件

概念:html、css、js的计划人体,为该集合体命名,用该名字复用html、css、js组成的集合体

vue实例就代表组件

组件用template实例成员管理html结构,有且只有一个根标签

子组件可以复用,所以数据要组件化处理,data的值由方法的返回值提供

组件分类

根组件:new Vue()生成的组件

局部组件:let 组件名={ },{ }内部采用的vue语法,只有在注册的父组件中才能使用

全局组件:Vue.component('组件名',{}),{}内部采用的是vue语法,不用注册可以在任何地方使用

组件的特点

1)组件都有管理组件html页面结果的 template 实例成员,template中有且只有一个根标签
2)根组件都是作为最顶层父组件,局部与全局组件作为子组件,也可以成为其他局部与全局组件的父组件
3)子组件的数据需要隔离(数据组件化,每一个组件拥有自己数据的独立名称空间)
4)局部组件必须注册后才能使用,全局组件不需要注册,提倡使用局部组件
5)组件中出现的所有变量(模板中、逻辑中),由该组件自己提供管理
6) 局部全局和根组件都是一个vue实例,一个实例对应一套html、css、js结构,所以实例就是组件

子组件

声明局部组件:局部组件要在其父组件中注册才能使用。申明组件,注册组件,渲染组件,全局不需要注册

局部或全局组件 ,一个组件可能被用多次

自定义组件标签事件

事件是属于子组件的,子组件在父组件中渲染并绑定事件方法,所以事件方法由父组件来实现

<!-- 父传子:自定义属性 -->
    <tag :info="msg"></tag>

        let tag = {
            props: ['info'],
        }
        new Vue({
            data: {msg: 12345}
            components: {
                tag,
            }
        })


<!-- 子传父:自定义事件 -->
	<tag :info="msg"></tag>
	
	let tag = {
		props: ['info'],
	}
	new Vue({
		data: {msg: 12345}
		components: {
			tag,
		}
	})
	
	子传父:自定义事件
	<tag @action="fn"></tag>
	
	let tag = {
		data: {msg: 12345},
		methods: {
			tag_fn() {
				this.$emit('action', this.msg)
			}
		}
	}
	new Vue({
		components: {
			tag,
		},
		methods: {
			fn(info) {}
		}
	})
posted @ 2019-12-19 21:52  jzm1201  阅读(75)  评论(0编辑  收藏  举报