当我们有时候某个功能的重复运用性较高,但每次都还要再写一个一模一样的功能,是不是很麻烦呢?
那麽这时我们就可以好好利用 Vue 组件的功能,可以让我们只写一次,就能直接使用很多次,举例来说,像是分页的按钮、导览列等重复运用较高的,就会写成组件
定义在 new Vue({})
之外
<script>
Vue.component('component-name', {
template: `
// 最外层指允只一个标签
<div>
// 这里为刻元件长怎样的 html 架构
</div>
`,
data() {
return { }
},
methods:{ }
});
var app = new Vue({
el: '#app',
data: { }
})
</script>
先从上面范例来看一下,组件的基本架构会长甚麽样子?
透过 Vue.component(组件名称,{ })
的方式来建立
全局组件注册的位置,必需在要被使用到的 new Vue({ }) 实例
之前,如果把上面 注册component 的位置放在 new Vue({ }) 实例
之後则无法使用该组件
在创建组件时,会有一个地方 template
用来定义组件的 html 模板该长怎麽样式,可以直接套用外面的 class
要注意,template
内只能有一个根节点
,意指最外层只能有一个元素标签
组件内 data
的写法与一般我们在写的不同,必需是一个函数,这样才能让每个被使用的组件有自己独立的 data
data: {
count: 0
}
data: function () {
return {
count: 0
}
}
<div id="app">
<my-component></my-component>
</div>
把组件名称当成标签使用即可
局部组件的注册方式如下,会直接写在Vue 的实例内
<div id="app1">
<child-component></child-component>
</div>
<script>
new Vue({
el: "#app1",
components:{
"child-component":{
template:"<h1>我是局部组件</h1>"
}
}
});
</script>
来做一个简单的单纯显示各自累计 count 的组件吧
QQㄋㄟㄋㄟ好喝到咩噗茶
<script>
Vue.component("counter",{
template:`
<div>
<button v-on:click='count += 1'>订购</button> {{ count }} 杯
</div>
`,
data() {
return {
count: 0
}
},
});
var app = new Vue({
el: '#app',
data:{},
})
</script>
把我们的组件样式跟功能先写完,再来就可以直接复用组件了
<div id="app">
<div class="flexbox">
QQㄋㄟㄋㄟ好喝到咩噗茶 : <counter></counter>
</div>
<div class="flexbox">
3P奶茶 : <counter></counter>
</div>
<div class="flexbox">
奶茶三兄弟 : <counter></counter>
</div>
<div class="flexbox">
绝代双Q奶茶 : <counter></counter>
</div>
</div>
每一个组件的 count 就可以独立出来了,画面如下
Vue 官方文件
segmentfault, Vue组件之全局组件与局部组件
<<: Day10-React Hook 篇-打造自己的 Hook:Custom Hook
>>: 爬虫怎麽爬 从零开始的爬虫自学 DAY10 python字串这样用
用 Owner 权限跑 Terraform 等於用 root 权限跑後端,夜路跑多了迟早遇到鬼 CI...
今天来点不一样的!来讲一个我最近常用的 React UI component library,就是 ...
来介绍一下lazy 以下以TextView为例 我们一般init(初始化一个元件): private...
昨天我们已经将制作好的版型,套用到 Angular 的根元件 AppComponent,今天,我们就...
前言 各位早安,书接上回我们将程序码成功加上储存的功能,我们今天要来使它的规模更大更方便使用 开爬-...