使用slot,讓元件更具有複用性
阿新 • • 發佈:2021-02-05
技術標籤:筆記
1.普通子元件
問題:比如在下面中的外掛,我們想在其中一個下面新增按鈕,其他的不新增,下面這種是實現不了的,所以我們需要插條slot來實現。
插條理解:抽取不同,保留共性
更改之前的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="app">
<cpn>< /cpn>
<cpn></cpn>
<cpn></cpn>
<cpn></cpn>
</div>
<template id="cpn">
<div>
<h2>我是元件</h2>
<p>我是內容</p>
</div>
</template>
<script type="text/javascript" src="../js/vue.min.js" ></script>
<script type="text/javascript">
const app = new Vue({
el:'#app',
data:{
message:'你好啊'
},
components:{
cpn:{
template:'#cpn'
}
}
})
</script>
</body>
</html>
加了插條以後的
1.基本插條用法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="app">
<cpn><button>按鈕</button></cpn>
<cpn><i>我是插條內容</i></cpn>
<cpn></cpn>
<cpn></cpn>
</div>
<template id="cpn">
<div>
<h2>我是元件</h2>
<p>我是內容</p>
<!-- //插條可以指定預設值 -->
<slot>我是插條預設值</slot>
</div>
</template>
<script type="text/javascript" src="../js/vue.min.js"></script>
<script type="text/javascript">
const app = new Vue({
el:'#app',
data:{
message:'你好啊'
},
components:{
cpn:{
template:'#cpn'
}
}
})
</script>
</body>
</html>
2.具名插條(給插條一個name)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="app">
<cpn>標題</cpn>
<cpn><button slot="left">按鈕</button></cpn>
<cpn></cpn>
<cpn></cpn>
</div>
<template id="cpn">
<div>
<!-- //插條可以指定預設值 -->
<slot name="left">我是左邊預設值</slot>
<slot name="center">我是中間預設值</slot>
<slot name="right">我是右邊預設值</slot>
<slot>我是沒有name的預設值</slot>
</div>
</template>
<script type="text/javascript" src="../js/vue.min.js"></script>
<script type="text/javascript">
const app = new Vue({
el:'#app',
data:{
message:'你好啊'
},
components:{
cpn:{
template:'#cpn'
}
}
})
</script>
</body>
</html>