Vu3中插槽的使用
作者:温新
时间:2021-08-08
hi,我是温新,一名PHPer
如何去理解Vue3中的插槽?Laravel中有模板继承,简单的理解,把插槽当做Larave中的模板继承,不一定很合适,但是非常适用,再细一点,当做Laravel中的yield
来看待。
本篇记录的案例中,再同一个位置展示不同的模板内容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>slot插槽的快速使用</title>
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<!-- 父组件 -->
<div id="app">
<global-component>
<h3>自如初</h3>
<p>{{ webUrl }}</p>
</global-component>
<global-component>
<h3>PHPer</h3>
<p>{{ webName }}</p>
</global-component>
</div>
<!-- 子组件 -->
<template id="com1">
<div>
<!-- 定义插槽,插槽中可以有默认的东西 -->
<span @click="slotClick">
<slot>
<p>我是插槽默认的东西</p>
</slot>
</span>
<hr>
</div>
</template>
<script>
const app = Vue.createApp({
data() {
return {
webUrl:'https://www.ziruchu.com',
webName:'个人博客'
}
}
});
app.component('globalComponent',{
template:'#com1',
methods:{
slotClick(){
alert('插槽中使用事件')
}
}
});
app.mount('#app');
</script>
</body>
</html>
注意点:
1)插槽是无法使用事件,若要使用事件,可以在外层包裹一个标签。本案中使用了span
,为插槽绑定事件,因此点击插槽中的任意元素,都会触发事件;
2)插槽使用了绑定数据,就看在哪个组件中使用了插槽,那么这个数据就来自于使用插槽的这个组件。
我是温新
第天进步一点,就一点点
请登录后再评论