Vue基础(八)组件

65 篇文章 0 订阅
64 篇文章 0 订阅

组件

在注册一个组件的时候,我们始终需要给它一个名字。

Vue.component('my-component-name', { /* ... */ })

该组件名就是 Vue.component 的第一个参数。

组件名大小写

定义组件名的方式有两种:
1.当使用 kebab-case (短横线分隔命名) 定义一个组件时,你也必须在引用这个自定义元素时也使用 kebab-case.
2.当使用 PascalCase (首字母大写命名) 定义一个组件时,你在引用这个自定义元素时两种命名法都可以使用。也就是说 < my-component-name> 和
< MyComponentName> 都是可接受的。注意,尽管如此,直接在 DOM (即非字符串的模板) 中使用时只有 kebab-case 是有效的。

拆分,重复使用
1. 全局组件
Vue.component(“组件名称”,{
})
组件名称 : myRow -> my-row
my -> my
2. 局部组件
在当前vue实例中声明
components : {
‘组件名称’:{
},
‘组件名称’:{
}
}

table 默认只能包含tr标签,如果想将自定义组件添加到table中

父组件传值给子组件
props
子组件传递给父组件
自定义事件
1. 为自定义组件添加事件
2. 在父容器中添加方法,让自定义组件调用
3. 子组件触发父容器的自定义事件
$emit(“事件名”,参数…)
非父子组件传值
通过中间实例传值
1. 自定义事件

结构
let vue = new Vue({
	el: "",
		data: {

		},
		methods: {

		},
		computed: {
		
		},
		watch: {
		
		}, 
		filters: {
		
		},
		created: {
		
		},
		mounted: {

		},
		beforeDestroy: {
		
		}

})	
组件
Vue.component("组件名称",{
	props: []
	data: function () {
		return { };
	},
	methods: {

	},
	computed: {
	
	},
	filters: {
	
	},
	created: {
	
	},
	mounted: {

	},
	beforeDestroy: {
	
	}
		
})
练习代码
<body>
    <div id="app">
            <my-compoenT></my-compoenT>
            <my-compoenT></my-compoenT>
            <my-compoenT></my-compoenT>
            <my-compoenT></my-compoenT>
            <child-comments></child-comments>
    </div>

    <div id="test">
            <my-compoenT></my-compoenT>
            <child-comments></child-comments>
    </div>
    <script>
        //全局注册的组件
        Vue.component("my-compoent",{
            template:"<p>这是全局组件<button>单击</button></p>"
        })


        var app=new Vue({
            el:"#app",
            //局部组件
            components:{
                "childComments":{
                template:'<div>这是局部组件</div>'
            }
            }
            

        })
        var test=new Vue({
            el:"#test"
        })
    
    </script>

</body>
<body>
    <div id="app">
        <my-message msg="这是父容器给你的" count="10"></my-message>
        <my-message msg="这是也是给你的" count="1"></my-message>
        
    </div>
    <script>
    Vue.component("my-message",{
        props:["msg","count"],
        template:"<div>{{num}}这是一条消息!---{{msg}} <button @click='num++'>加一</button></div>",
        data() {
            return {
               num:this.count
            }
        },
    })

    var app=new Vue({
        el:"#app",
        data:{

        }
    })
    
    </script>

</body>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值