元件是Vue最强大的功能之一,可以将重复的程序码封装,提高效率和维护性。
把网页分成区块,区块内还可以在分区块,每个区块都有各自的模板、样式,与行为逻辑,把其中一个拿掉,期他的区块也不会因此而坏掉。
首先,赋予他一个名称,名称有两种写法
HTML标签没有大小写的区分,所以用驼峰式注册元件时,在HTML模板呼叫时要改用连字号写法
Vue.component('my-component', { /* ... */ })
Vue.component('MyComponent', { /* ... */ })
<my-component></my-component>
<my-component></my-component>
再来,就是元件的位置,元件也有全域和区域之分
<my-component></my-component>
const app = Vue.createApp({
})
app.component('my-component', {
template: `<h3>Hello Vue</h3>`,
data() {
}
})
app.mount('#app');
在实体上加上components
属性,区域元件就可以在里面定义
const app = Vue.createApp({
components: {
'my-component': {
template: `<h3>Hello Vue</h3>`
}
}
})
支援import
方式引入
import myComponent from './conponents/my-component.js'
const app = Vue.createApp({
components: {
myComponent
}
})
当template
内容愈来愈多的时候,可以利用x-template
来打包成易阅读的模板,template
只需要写上ID就能执行。
<script type="text/x-template" id="card">
<tr>
<td>{{ person.name }}</td>
<td>{{ person.cash }}</td>
<td>{{ person.icash }}</td>
</tr>
</script>
app.component('card', {
template: `#card`,
})
JS是透过reference方式传递资料,若没有透过function
回传一个新物件,那麽子元件的data
就会共用,在点击click
按钮时四个元件内的data
都会加1。
<card></card>
<card></card>
<card></card>
<card></card>
<script type="text/x-template" id="card-component">
<div class="card">
<div v-model="count">
count:{{count}}
</div>
<button @click="count++">click</button>
</div>
</script>
const app = Vue.createApp({
})
const $data = {
count: 0
}
app.component('card', {
data() {
return $data
},
template: '#card-component',
})
app.mount('#app');
改成这样的方式就可以个别的触发加一事件
app.component('card', {
data() {
return {
count: 0
}
},
template: '#card-component',
})
若要个别清除资料回到初始值可以使用Object.assign
和this.$options.data()
让data
资料回到0
app.component('card', {
data() {
return {
count: 0
}
},
template: '#card-component',
methods: {
resetData() {
Object.assign(this.$data, this.$options.data());
}
}
})
为什麽要用Vue.js的元件化开发
https://iter01.com/78286.html
>>: [day10] Flask Python API Service
DOM(Document Object Model) DOM = Document Object M...
Storybook 除了可以为元件攥写 Story 以外,也可以攥写纯内容的说明文件,不过纯内容的说...
[ 30 Days of ML Challenge | D03] 今天提供一个文件以及一个练习教材,...
案例说明及适用场景 odoo原生并无薪资计算,但有免费的第三方可供修改参考 或是直接使用 台湾的付费...
实习生小光的30天历程回顾 30天的历程说长不长说短不短,从事後来看会觉得时间过得飞快,但是从刚开始...